opencv调用摄像头函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv调用摄像头函数相关的知识,希望对你有一定的参考价值。

我使用了opencv的调用摄像头的函数,从摄像头捕获一帧图像并保存,运行之后,摄像头的灯都打开了,可是在显示的窗口中,却并没有看到这一帧图像,不知道为什么,求大神解释,怎么解决这一问题?跪求!!
代码如下(变量定义什么的省略了):

capture=cvCreateCameraCapture(-1);//调用摄像头
cvQueryFrame(capture);//从摄像头捕获一帧图片并保存
cvNamedWindow("NewImage",1);
cvShowImage("OutImage",capture);
cvWaitKey(0);

这句话有问题,cvShowImage("OutImage",capture);
IplImage* image = cvQueryFrame(capture); 这样才得到图片,要显示的应该是image。
cvShowImage("OutImage",image);

//////////////////////////////////////////////////////////////////////////////
这个是opencv的c接口,建议使用c++接口,简单得多。

cv::VideoCapture Camera(0);
if (!Camera.isOpened())
return -1;
while (cv::waitKey(33) != 27)

cv::Mat mat;
if (!Camera.read(mat))
break;
cv::imshow("video", mat);

Camera.release();
return 0;
参考技术A #include "opencv2/opencv.hpp"
int main()

//读取摄像头
//声明IplImage指针
IplImage* pFrame = NULL;
CvCapture* pCapture = NULL;
//窗口通过窗口名来标识
cvNamedWindow("video", CV_WINDOW_AUTOSIZE);

pCapture = cvCreateCameraCapture(CV_CAP_ANY);
cvWaitKey(0);
pFrame = cvQueryFrame( pCapture );

//while(pFrame = cvQueryFrame( pCapture ))
//
// cvShowImage("video", pFrame);
// //延时 ,不然不会显示图像的,应该是扫描太快了
// cvWaitKey(33); //不然会因为太快导致显示还没完九需要去显示下一帧
//
cvShowImage("video", pFrame);
cvWaitKey(0);
//释放图像
cvReleaseImage(&pFrame);
//销毁窗口
cvDestroyWindow("video");
//释放摄像设备
cvReleaseCapture(&pCapture);
return 0;

//网上粘的希望有用
参考技术B 你把cvWaitKey(0)改为cvWaitKey(1)或者把括号里面的数改为10,100试试

以上是关于opencv调用摄像头函数的主要内容,如果未能解决你的问题,请参考以下文章

求C++调用opencv设置获取摄像头图像大小的方法

opencv怎样打开自己笔记本的摄像头

opencv如何选择摄像头

求用opencv把摄像头读取的图像转换成矩阵形式的代码

有关opencv无法解码网络摄像头rtsp流的解决办法

opencv2 调用摄像头黑屏