C++ 在c+;中使用OpenCV设置gstreamer capsfilter+;
有了GuvView中的Microsoft LifeCam影院(Ubuntu上),我在1280x720上的速度达到了30帧。在我的OpenCV程序中,我只得到10fps(只有C++ 在c+;中使用OpenCV设置gstreamer capsfilter+;,c++,opencv,webcam,gstreamer,frame-rate,C++,Opencv,Webcam,Gstreamer,Frame Rate,有了GuvView中的Microsoft LifeCam影院(Ubuntu上),我在1280x720上的速度达到了30帧。在我的OpenCV程序中,我只得到10fps(只有queryframe和showimage,没有进行图像处理)。我发现这是一个错误。一个解决方案是在gstreamer中设置capsfilter,在terminal I中可以这样做: gst-launch v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=1280,heigh
queryframe
和showimage
,没有进行图像处理)。我发现这是一个错误。一个解决方案是在gstreamer中设置capsfilter,在terminal I中可以这样做:
gst-launch v4l2src device=/dev/video0 !
'video/x-raw-yuv,width=1280,height=720,framerate=30/1' ! xvimagesink
这管用!问题是:
我已经找到了这个问题,但我无法使用网络摄像头解决它。不幸的是,无法设置从摄像头检索到的帧的格式(YUV),但对于其余设置,您可以尝试使用:
如果设置帧大小不起作用,我强烈建议您阅读以下帖子:我的坏,我将网络摄像头设置为1280x800,这迫使它使用YUVY,最高每秒10帧。在我的程序中将其设置回1280x720会给我30 fps谢谢,但是CV_CAP_PROP_fps在OpenCV中是一个不起作用的函数。此外,这不是OpenCV的问题,而是gstreamer的问题(请参阅错误报告),如果上述方法不起作用,那么您就倒霉了。您将无法通过OpenCV设置管道配置。
cvSetCaptureProperty(capture, CV_CAP_PROP_FPS, 30);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 1280);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 720);