Opencv读取USB网络摄像头无法显示,图像为空,显示黑色?

利用Opencv读取电脑的摄像头,代码如下,一直无法正常运行,搜索网上的解决方案,均未解决。代码语法没有错误,摄像头也可以打开,但是就是无法读取当前帧图像

#include <opencv.hpp>
using namespace cv;
int main() {
    VideoCapture capture(0);
    if (!capture.isOpened()) 
        return -1;
    Mat frame;
    while (1) {
        capture >> frame;
        imshow("读取视频", frame);
        waitKey(30);
    }
    return 0;
}

 由于一直未找到原因,在网上搜索到老版本的代码如下,便可以成功读取并显示摄像头的画面。

#include <opencv.hpp>    
using namespace cv;

int main(int argc, char** argv) 
{
	cvNamedWindow("视频");
	CvCapture* capture = cvCreateCameraCapture(0);
	IplImage* frame;

	while (1) 
	{
		frame = cvQueryFrame(capture);
		cvResizeWindow("视频", 640, 480);
		cvShowImage("视频", frame);
		cvWaitKey(50);
	}

	cvReleaseCapture(&capture);
	cvDestroyWindow("视频");
	return 0;
}

大致猜测无法获取当前帧的原因是摄像头和opencv版本之间的兼容问题。

猜你喜欢

转载自blog.csdn.net/qq_15211883/article/details/83652532