问题
经过编译且安装后,发现 3rdparty 目录下没有ffmpeg目录
通过opencv的cv::CascadeClassifier.load()
函数加载mp4文件时无法读取到mp4文件内容
分析
通过再次构建编译后发现在 Configure 过程中下载 ffmpeg.dll 文件失败了; 虽然这个报错并不影响编译,但是最终导致了无法打开mp4文件;
解决
虽然下载失败了, 但是也告诉我们具体日志信息,在 D:/cpp/opencv-3.4.16/sources/build/CMakeDownloadLog.txt
里面;我们打开看下
打开后如下图,告诉我们有3个文件下载失败了;这三个文件分别为:
- opencv_ffmpeg.dll
- opencv_ffmpeg_64.dll
- ffmpeg_version.cmake
接下来我们将这3个文件都下载下来,图中 https://raw.githubusercontent.com
开头的就是下载链接
有一个问题是下载ffmpeg_version.cmake文件时可能会在浏览器中直接打开此文件,此时应当在浏览器上右键选择“另存为”将文件保存到本地。如果直接复制内容可能导致MD5校验不通过而重新下载
然后最重要的一部,将3个下载下来的文件分别命名为 #check_md5
所在的那一栏的文件名
- 将
opencv_ffmpeg.dll
改为:55c25bbc13e4a12d4339b70d3b76987f-opencv_ffmpeg.dll
- 将
opencv_ffmpeg_64.dll
改为67caee9231c6843483b4de9815d6526e-opencv_ffmpeg_64.dll
- 将
ffmpeg_version.cmake
改为:3b90f67f4b429e77d3da36698cef700c-ffmpeg_version.cmake
然后将这三个文件复制到 D:\cpp\opencv-3.4.16\sources\.cache\ffmpeg
目录进行替换;
为什么要复制到 D:\cpp\opencv-3.4.16\sources\.cache\ffmpeg
目录呢? 因为在 CMakeDownloadLog.txt 文件中已经告诉你了,检查这三个文件时失败了,现在只需要将这3个文件修正过来就好了!
到这里就修复完成了, 然后在按照以下教程的第2步开始,重新 Configure,再按照教程一步步操作就可以了!