【问题标题】:Can I set the color depth while capturing the webcam image using OpenCV?我可以在使用 OpenCV 捕获网络摄像头图像时设置颜色深度吗?
【发布时间】:2014-02-04 14:47:24
【问题描述】:

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

firstFrame = cvQueryFrame(capture);

很容易设置宽度和高度属性

cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, WIDTH );
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, HEIGHT );

我想知道是否有一种方法可以在不进一步处理帧的情况下指定颜色深度?

【问题讨论】:

  • 我不这么认为.. 我只是在使用一个简单的网络摄像头。有选择吗?
  • 我使用了 cvGetCaptureProperty(capture, CV_CAP_PROP_FORMAT);返回-1。你知道我在哪里可以找到适用值的备忘单吗?

标签: c++ opencv image-capture


【解决方案1】:

根据documentation,如果你使用函数retrive()来获取你的框架,你应该可以使用CV_CAP_PROP_FORMAT来做到这一点。

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

但是,还要注意:

当查询一个不被使用的后端支持的属性时 VideoCapture 类,返回值 0。

【讨论】:

    【解决方案2】:

    在 github 上创建了一个单独的分支,对 videoio 进行了更改以支持自定义流和格式。

    Git hub 回购链接

    https://github.com/shawndfernandes/opencv

    添加了对 opencv 捕获的自定义流和深度的支持,如果未设置,则恢复为默认的 opencv 值。

    通过 VideoWriter::set 方法设置

    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:

    【讨论】:

      猜你喜欢
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 2013-06-03
      • 1970-01-01
      • 2013-02-09
      相关资源
      最近更新 更多