Ubuntu:VideoCapture 打开本地avi/mp4视频失败 | 您所在的位置:网站首页 › wer视频 › Ubuntu:VideoCapture 打开本地avi/mp4视频失败 |
最近在做yolov5视频检测,想着先测试一下本地的视频文件,结果就遇到报错: failed to open video ../vtest.avi [ERROR:0] VIDEOIO(cvCreateFileCapture_Images(filename.c_str())): raised OpenCV exception: OpenCV(3.4.12) /home/xxx/Downloads/opencv-3.4.12/modules/videoio/src/cap_images.cpp:246: error: (-5:Bad argument) CAP_IMAGES: can't find starting number (in the name of file): ../vtest.avi in function 'icvExtractPattern'【直接放结论】:问题出在编译opencv的时候,虽然勾选了ffmpeg,但是可能是我的ubuntu系统本身没有安装ffmpeg或者是ffmpeg的版本太低,导致编译出来的opencv库,在对本地视频解码时失败,所以也就无法播放视频。解决办法就是先安装ffmpeg,然后重新编译OpenCV即可。 下面是完整的思考过程,不需要可以略过… 本来想着不是什么大问题,可能是路径不对。为了一步到位,我干脆直接使用视频的绝对路径: /home/xx/videos/vtest.avi结果居然还报错。显然事情没有这么简单:
于是,我仔细复盘了现在的情况: 操作系统是ubtunu,之前在win10从来没有遇到过类似情况OpenCV是我自己编译的,且经过测试,其他的库和api使用正常VideoCapture打开本地USB Camera没问题这样看来,排除了opencv调用的时候,头文件或者库文件路径错误的原因。且VideoCapture打开摄像头是没有问题,说明该api应该也是没有问题的。但是为什么会偏偏在打开本地视频的时候报错呢? 这时候,我突然想起来:视频的播放其实是需要先解码的,只有解码之后,才能进行播放。我这里的问题很可能是由于解码失败。 联系到OpenCV的解码用的是ffmpeg,所以我想到在ubuntu系统中,安装ffmpeg: sudo apt update sudo apt install ffmpeg【信心满满,再次尝试】 failed to open video ../vtest.avi [ERROR:0] VIDEOIO(cvCreateFileCapture_Images(filename.c_str())): raised OpenCV exception: OpenCV(3.4.12) /home/xxx/Downloads/opencv-3.4.12/modules/videoio/src/cap_images.cpp:246: error: (-5:Bad argument) CAP_IMAGES: can't find starting number (in the name of file): ../vtest.avi in function 'icvExtractPattern'问题还在…
于是,我一狠心,再次编译OpenCV: 经过一段时间的耐心等待,终于编译成功。然后赶紧测试一下,是不是问题已经解决: /home/pl/projects/yolov5-trt-deepsort-camera/cmake-build-debug/TrackCounter -v vtest.avi vtest.avi fps[0], Preprocess Time: 8ms Detect Time: 7ms显然问题顺利解决。 总结:回过头看,好像问题并不难,但是当时遇到的时候,也是费了一番心思思考的。 【遇到问题->尝试解决->失败->尝试解决->成功】 这个过程虽然让人很苦恼,但是解决问题的那一刻,心情还是很美好的,能力也在一步步提升。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |