背景
最近在使用opencv接usb相机时遇到了画面很卡问题,具体体现在cv::videocapture >> frame 的耗时大概在200ms左右。通过查询资料发现,USB相关通常会支持YUV格式和MJPG格式输出,YUV格式未经过压缩,数据量较大,usb相机的带宽不足以支撑高分辨率,MJPG格式可支持高分辨率。
解决方案
这个问题的核心是需要给相机配置编码格式,帧率以及分辨率,但是设置的时候需要注意顺序,顺序不对依然有卡顿的问题,下面是实测能达到30fps的设置顺序,在设置参数前可以使用ffmpeg查询相机支持的分辨率选项。
m_videoCapture.set(cv::CAP_PROP_FPS,30);
m_videoCapture.set(cv::CAP_PROP_FRAME_WIDTH,1920);
m_videoCapture.set(cv::CAP_PROP_FRAME_HEIGHT,1080);
m_videoCapture.set(cv::CAP_PROP_FOURCC,cv::VideoWrite::fourcc('M','J','P','G'));
获取相机支持的分辨率
- ffmpeg -list_devices true -f dshow -i dummy
- ffmpeg -list_options true -f dshow -i video="videoName"
文章来源:https://www.toymoban.com/news/detail-745427.html
文章来源地址https://www.toymoban.com/news/detail-745427.html
到了这里,关于【opencv】解决USB相机取流卡顿问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!