1. 程式人生 > >Opencv讀取USB網路攝像頭無法顯示,影象為空,顯示黑色?

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版本之間的相容問題。