OpenCV ERROR: SampleCB() - buffer sizes do not match 解决方法
- 原因:由于经过采集卡压缩等原因,实际读到的图像流尺寸与原始尺寸不匹配
- 解决方法:手动设置为采集卡压缩后的实际尺寸
VideoCapture cap(摄像机序号);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 压缩后的实际宽);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 压缩后的实际高);
Mat camFeed;
cap.read(camFeed);
具体事例
我的电脑直接插入 1 Channel USB Capture 时,即单个接入USB摄像头设备,按OpenCV 默认读取正常,但由于我需要同时接入4个摄像头同时获取图像,我换成了4 Channel USB DVR,一般都附带一个监控软件,需要运行这个四合一监控软件,通过软件的流媒体输出方式供电脑其他程序使用这4个通道的视频信号,然后就出现了这个bug。
我参考了下方链接中的回答,在读取视频流之前,将VideoCapture 对象cap的像素宽高设置为USB DVR监控软件的输出宽高之后,便可以顺利读取。
参考:http://opencv.yahoogroups.narkive.com/Yc8H2P6w/error-samplecb-buffer-sizes-do-not-match