opencv调用摄像头函数 65
我使用了opencv的调用摄像头的函数,从摄像头捕获一帧图像并保存,运行之后,摄像头的灯都打开了,可是在显示的窗口中,却并没有看到这一帧图像,不知道为什么,求大神解释,怎...
我使用了opencv的调用摄像头的函数,从摄像头捕获一帧图像并保存,运行之后,摄像头的灯都打开了,可是在显示的窗口中,却并没有看到这一帧图像,不知道为什么,求大神解释,怎么解决这一问题?跪求!!
代码如下(变量定义什么的省略了):
capture=cvCreateCameraCapture(-1);//调用摄像头
cvQueryFrame(capture);//从摄像头捕获一帧图片并保存
cvNamedWindow("NewImage",1);
cvShowImage("OutImage",capture);
cvWaitKey(0); 展开
代码如下(变量定义什么的省略了):
capture=cvCreateCameraCapture(-1);//调用摄像头
cvQueryFrame(capture);//从摄像头捕获一帧图片并保存
cvNamedWindow("NewImage",1);
cvShowImage("OutImage",capture);
cvWaitKey(0); 展开
3个回答
展开全部
这句话有问题,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;
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;
上海华然企业咨询
2024-10-21 广告
2024-10-21 广告
上海华然企业咨询有限公司专注于AI与数据合规咨询服务。我们的核心团队来自头部互联网企业、红圈律所和专业安全服务机构。凭借深刻的AI产品理解、上百个AI产品的合规咨询和算法备案经验,为客户提供专业的算法备案、AI安全评估、数据出境等合规服务,...
点击进入详情页
本回答由上海华然企业咨询提供
展开全部
#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;
}
//网上粘的希望有用
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;
}
//网上粘的希望有用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把cvWaitKey(0)改为cvWaitKey(1)或者把括号里面的数改为10,100试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询