使用OpenCV捕获网络摄像头图像时,我可以设置颜色深度吗?

时间:2014-02-04 14:47:24

标签: c++ opencv image-capture

我在C ++中使用OpenCV捕获图像

firstFrame = cvQueryFrame(capture);

可以通过

轻松设置宽度和高度属性
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, WIDTH );
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, HEIGHT );

我想知道是否有办法在没有进一步处理框架的情况下指定颜色深度?

2 个答案:

答案 0 :(得分:2)

根据documentation,如果您使用CV_CAP_PROP_FORMAT功能获取框架,则应该可以使用retrive()执行此操作。

  

CV_CAP_PROP_FORMAT由retrieve()返回的Mat对象的格式。

但是,请注意:

  

查询后端不支持的属性时   VideoCapture类,返回值为0。

答案 1 :(得分:0)

在github上分叉了一个单独的分支,改变了videoio以支持自定义流和&格式。

Git hub repo link

https://github.com/shawndfernandes/opencv

添加了对自定义流和&amp ;;的支持opencv capture的深度,如果没有设置,则恢复为默认的opencv值。

通过VideoWriter :: set method设置

CV_CAP_PROP_DEPTH

matrix_depth = 8,16 // *用于8U,16用于16U深度

CV_CAP_PROP_STREAM

stream_format = 1,2,3,4,5 ... 12; //通过V4L选择原始相机流

“BGR24”1:

“YVU420”2:

“YUV411P”3:

“MJPEG”4:

“JPEG”5:

“YUYV”6:

“UYVY”7:

“SN9C10X”8:

“SBGGR8”9:

“SGBRG8”10:

“RGB24”11:

“Y16”12: