关于opencv打开摄像头成灰色问题
2017-09-04 21:01
926 查看
代码:
capture可以打开,但是无法抓取frame。
原因:
查找资料看到,可能是因为驱动的原因导致。windows 下的摄像头的都用了Directshow,而opencv 的这两个函数都需要使用VFW的驱动才能正常使用。
解决方法:
使用videocapture
int main(int argc, const char** argv) { CvCapture* capture = 0; Mat frame, image; capture = cvCaptureFromCAM(-1); //capture = cvCaptureFromFile("1.avi"); cvNamedWindow("result", 1); Sleep(2000); if (capture) { cout << "In capture ..." << endl; for (;;) { IplImage* iplImg = cvQueryFrame(capture); frame = cv::cvarrToMat(iplImg); if (frame.empty()) { cout << "No Frame ..." << endl; break; } imshow("result", frame); cvWaitKey(33); } } else { cerr << "ERROR: Could not initiate capture" << endl; return -1; } cvReleaseCapture(&capture); cvDestroyWindow("result"); return 0; }问题描述:
capture可以打开,但是无法抓取frame。
原因:
查找资料看到,可能是因为驱动的原因导致。windows 下的摄像头的都用了Directshow,而opencv 的这两个函数都需要使用VFW的驱动才能正常使用。
解决方法:
使用videocapture
int main(int argc, char** argv) { VideoCapture cap; if (argc > 1) cap.open(argv[1]); else cap.open(0); if (!cap.isOpened()) { std::cerr << "Cannot read video. Try moving video file to sample directory." << std::endl; return -1; } Mat frame; for (;;) { cap >> frame; if (frame.empty()) break; imshow("FG Segmentation", frame); int c = waitKey(30); if (c == 'q' || c == 'Q' || (c & 255) == 27) break; } return 0; }
相关文章推荐
- 关于OpenCV打开摄像头只显示灰色的三种解决办法
- 关于opencv打开摄像头的数量的问题
- 关于opencv2.4.9和VS2013在windows7下无法打开摄像头的问题的扯淡解决办法
- 关于opencv2.4.9和VS2013在windows7下无法打开摄像头的问题的扯
- 关于opencv无法打开win7笔记本摄像头问题
- 使用PCI-E USB3.0扩展板卡解决OPENCV不能同时打开同品牌摄像头的问题
- opencv2.4.8在win7下无法打开摄像头,或者摄像头灰色图像的解决方案
- win7 旗舰 vs2008 OpenCV2.3.1 解决了 OpenCV旧版本在win7下不能打开摄像头的问题
- 虚拟机Ubuntu打开摄像头失败及OpenCV打开摄像头超时的问题
- 关于opencv摄像头图像显示 经常出现select timeout的问题
- 自己组装摄像头软件opencv无法打开的问题
- 关于vs2015每次打开都要配置opencv问题
- Linux下利用Opencv打开笔记本摄像头问题
- 关于opencv1.0中avi视频不能打开问题
- OpenCV打开摄像头问题
- 【计算机视觉】关于用opencv 设置摄像头读分辨率问题的若干说明
- 请教大神:win下的OPENCV,打开外置摄像头的问题
- 关于LINK : fatal error LNK1104: 无法打开文件“opencv_calib3d24Xd.lib”问题解决
- 【转】[OpenCV]关于opencv不能打开某些视频得问题
- OpenCV 关于两张图片的整合问题