1

使用 guvcview 中的 Microsoft LifeCam Cinema(在 Ubuntu 上),我在 1280x720 上获得 30fps。在我的 OpenCV 程序中,我只得到 10fps(只有queryframeshowimage,没有进行图像处理)。我发现这是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,但我无法让它与网络摄像头一起使用。

4

2 回答 2

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);

如果设置帧大小不起作用,我强烈建议您阅读这篇文章:在 OpenCV 中增加相机捕获分辨率

于 2012-05-18T13:20:15.730 回答
1

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

于 2012-05-29T12:26:04.340 回答