概述:
遇到的问题:
1.调用一个外接USB相机,运行没问题,但显示界面是灰色;
2.读取一张图像出现1)先是显示灰色2)后面一闪而过;
解决思路:
1.摄像头调用有问题就先尝试调用一种图
出现问题2
解决:1.在main()函数内结尾加上:
waitKey(0);
destroyAllWindows();
return 0;
效果:不显示灰度,但一闪而过;
2.考虑是否要创建Windows窗口(namedWindow())
namedWindow("初始图像", CV_WINDOW_NORMAL);
imshow("初始图像", test);
waitKey(0);
destroyAllWindows();
return 0;
效果:显示图像,但出现:test-opencv.exe 已触发了一个断点。
(好像关掉imshow()窗口和.exe窗口的先后顺序引起的)
附:[WaitKey()函数理解](https://blog.csdn.net/qq_32211827/article/details/55657146)
解决问题!
附完整代码:
// test-opencv.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
char outputiamge[]="初始图象";
int main(int argc, char** argv)
{
VideoCapture cap(0);
namedWindow(outputiamge, CV_WINDOW_NORMAL);
Mat image;
if (!cap.isOpened())
{
cout << "open camera failed" << endl;
return -1;
}
while (1)
{
cap >> image;//cap.read(image);
imshow(outputiamge, image);
waitKey(20);
if (waitKey(20) > 0) break;
}
return 0;
}