说明: 由于本文章重点在于解决本人opencv编译时遇到的一些问题,所以不给出详细的配置过程。详细可参考下面下方链接。希望这些错误也能帮助其他人快速解决问题。
VScode搭建Opencv(C++开发环境)_vscode opencv-优快云博客https://blog.youkuaiyun.com/qq_45022687/article/details/120241068需要特别说明的时是,要注意cmake版本与opencv版本,最好与本人这次配置的相同,否则可能遇到不一样的错误。
配置版本说明:
1、Mingw编译器:选择最新的即可
2、cmake版本 3.21.3
3、opencv版本 4.5.5
1、问题一
使用cmake-gui进行configure时,提醒如下图所示的warning显示ffmpeg无法下载(不会阻断cmake进程),这是因为我们的网络无法去访问对应的网址,这里不是科学上网的问题(我用科学上网工具也会报错)。之后我们可以到cmakeDownloadlog.txt中去寻找ffmpeg的下载链接,进行手动下载。
打开对应位置的的CmakeDownloading.txt,如下图所示。
上面的日志文件中记录了下载对应文件的链接,例如 8862c87496e2e8c375965e1277dee1c7-fmpeg version.cmake文件,对应的下载链接为后面的https:/tawgithubusercontent.com/ops3rdparty/4d348507d156ec797a88a887cfa7f9129a35afac/ffmpeg/ffmpeg version.cmake(注意这个网址是无法直接访问的,需要使用github加速),加速方法为:在网址前加:https://ghproxy.com/,最终为https://ghproxy.com/https:/tawgithubusercontent.com/ops3rdparty/4d348507d156ec797a88a887cfa7f9129a35afac/ffmpeg/ffmpeg version.cmake,这样就可以下载文件,之后分别将下载好的三个文件替换C:\opencv\sources\.cache\ffmpeg中的三个文件,并重新命名为MD5码+文件名。MD5在CmakeDownLog.txt中有记录,
比如ffmpeg_version.cmake 的MD5码为8862c87496e2e8c375965e1277dee1c7,
则需要重新命名为:8862c87496e2e8c375965e1277dee1c7-fmpeg version.cmake
2、问题二
在使用mingw32-make -j 8 进行编译之后,报如下错误
这里是因为uintptr_t数据类型不存在,这是因为在C:/opencv/build/x64/minGW/3rdparty/ade/ade-0.1.1f/sources/ade/include/ade/typed_graph.hpp中缺少头文件(C:/opencv/build/x64/minGW是我自己创建的,在cmake-gui中的build路径),加上头文件#include <cstdint>即可解决。
3、问题三
也发生在mingw32-make -j 8 之后,报错如下所示。
通过阅读错误可以发现,find_if_not函数的第三个参数被判断为 <unresolved overloaded function type>,即判断为未解析重载的重载函数类型,编译器无法判断他用的是哪一个,编译器列出了isspace的重载版本所在的目录(图中的In file included from: ***),解决方法就是指定isspace为algorithm对应的版本,确定C:\opencv\sources\modules\gapi\src\api\gcomputation.cpp中包含了#include <algorithm>的头文件,之后在find_if_not的isspace参数前加入全局作用域,代表它使用的是algorithm中的isspace,即::isspace即可解决问题
解决了如上几个错误,再次mingw32-make -j 8就成功了!!!之后进行install即可。