【问题标题】:Setting gstreamer capsfilter with OpenCV in c++在 C++ 中使用 OpenCV 设置 gstreamer capsfilter
【发布时间】:2012-05-25 17:14:47
【问题描述】:

使用 guvcview 中的 Microsoft LifeCam Cinema(在 Ubuntu 上),我在 1280x720 上获得 30fps。在我的 OpenCV 程序中,我只得到 10fps(只有 queryframeshowimage,没有进行图像处理)。我发现它是problem in gstreamer。一个解决方案是在 gstreamer 中设置一个 capsfilter,在终端中我可以这样做:

gst-launch v4l2src device=/dev/video0 !
'video/x-raw-yuv,width=1280,height=720,framerate=30/1' ! xvimagesink

这行得通!问题是:

  1. 如何在我的 c++/OpenCV 程序中实现它?
  2. 或者是否可以将 gstreamer 设置为始终使用此 capsfilter?

我已经找到了这个问题Option 3,但我无法使用网络摄像头解决它。

【问题讨论】:

    标签: c++ opencv webcam gstreamer frame-rate


    【解决方案1】:

    很遗憾,无法设置从相机检索到的帧的格式 (YUV),但对于其余设置,您可以尝试使用 cvSetCaptureProperty()

    cvSetCaptureProperty(capture, CV_CAP_PROP_FPS, 30);
    cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 1280);
    cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 720);
    

    如果设置帧大小不起作用,我强烈建议你阅读这篇文章:Increasing camera capture resolution in OpenCV

    【讨论】:

    • 谢谢,但 CV_CAP_PROP_FPS 在 OpenCV 中是一个非工作函数。这也不是 OpenCV 问题,而是 gstreamer 问题(请参阅错误报告)
    • 如果以上方法都不起作用,那你就不走运了。您将无法通过 OpenCV 设置管道配置。
    【解决方案2】:

    我的错,我将我的网络摄像头设置为 1280x800,这迫使它以最高 10 fps 的速度使用 YUVY。在我的程序中将其设置回 1280x720 给了我 30 fps

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-23
      • 2020-07-03
      • 1970-01-01
      • 2016-10-07
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多