关于用opencv 设置摄像头读分辨率问题的若干说明
1 问题最初起因
我想充分利用相机高分辨率来提高视角,故用opencv直接设置摄像机分辨率。不幸的我倒霉出现问题。
VideoCapture类读AVI视频可以设置高分辨率1294*964,读摄像头为啥不能设置1294*964,可以设置640*480,也可以设置320*240
有读摄像头设置分辨率1294*964成功的吗,相机要求视场大,距离目标不能太远,要求稳定。所以就用最高分辨率了。
是我相机问题,还是VideoCapture类问题
2 问题表现形式
2.1 ERROT: SampleCB() - buffer sizes do not match 解决方案
cap.set(CV_CAP_PROP_FRAME_WIDTH,1294);
cap.set(CV_CAP_PROP_FRAME_HEIGHT,964);
摄像头摄取的图片超出了OpenCV的最大限度,造成缓冲区大小不匹配:
解决方法很简单。
cv::VideoCapture capture(1);
double width=capture.get(CV_CAP_PROP_FRAME_WIDTH);
double height=capture.get(CV_CAP_PROP_FRAME_HEIGHT);
capture.set(CV_CAP_PROP_FRAME_WIDTH,width);
capture.set(CV_CAP_PROP_FRAME_HEIGHT,height);
参考 的http://blog.csdn.net/jia_zhengshen/article/details/9980495
2.2 但没有解决,因为默认为VideoCapture 640*480
VideoCapture cap(1);
//double width=cap.get(CV_CAP_PROP_FRAME_WIDTH);
<