利用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版本之间的兼容问题。