本文共 831 字,大约阅读时间需要 2 分钟。
CSDN中已经有相当部分的博客写了如何利用OpenCV通过摄像头获取并保存图片,此处不再赘述。我遇到的问题是利用OpenCV的属性设置没有办法改变摄像头采集图片的分辨率。
1.配置VS2013+OpenCV3.0.0
VideoCapture cap(0);if (!cap.isOpened()) return -1;cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);cap.set(CV_CAP_PROP_FRAME_HEIGHT, 720);
通过上述代码就能够打开摄像头“0”,并将显示的照片尺寸设定为:1280 x 720
2.配置VS2015+OpenCV3.4.2
我将上述代码移植到VS2015+OpenCV3.4.2上发现,无论怎么设置尺寸,输出的照片如下: 整个照片还是1280 x 720 ,但是始终会有黑色边框填充,并报如下错误:[ INFO:0] VIDEOIO: Enabled backends(5, sorted by priority): FFMPEG(1000); MSMF(990); DSHOW(980); CV_IMAGES(970); CV_MJPEG(960)
经过查找大量资料和方法,最后在Google上找到如下方法:
VideoCapture cap(0 + cv::CAP_DSHOW);cap.open(0 + cv::CAP_DSHOW);if (!cap.isOpened()) return -1; cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);cap.set(CV_CAP_PROP_FRAME_HEIGHT, 720);虽然还是会报如上错误,但是照片输出正常了。具体原因不知道,欢迎留言补充。 一天后:在release下就不会报错,完美运行。
转载地址:http://ltyci.baihongyu.com/