opencv调用摄像头函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv调用摄像头函数相关的知识,希望对你有一定的参考价值。
我使用了opencv的调用摄像头的函数,从摄像头捕获一帧图像并保存,运行之后,摄像头的灯都打开了,可是在显示的窗口中,却并没有看到这一帧图像,不知道为什么,求大神解释,怎么解决这一问题?跪求!!
代码如下(变量定义什么的省略了):
capture=cvCreateCameraCapture(-1);//调用摄像头
cvQueryFrame(capture);//从摄像头捕获一帧图片并保存
cvNamedWindow("NewImage",1);
cvShowImage("OutImage",capture);
cvWaitKey(0);
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调用摄像头函数的主要内容,如果未能解决你的问题,请参考以下文章