VisualStudio配置opencv是一个老生常谈的话题了,已经有很多博主写了详细、周到的文章。重复造轮子就两个目的:
- 从“问题入手”说下opencv配置过程中的小问题。
- 为了博客的完整性。
工具和环境
- 操作系统:windows10
- Visual Studio 2022
- opencv 4.10.0
无论是哪个版本的Visual Studio和opencv搭配进行配置,操作都是大同小异。
opencv下载
opencv官方下载地址,选择对应的操作系统和版本下载即可。
opencv配置
下载到windows版本的安装文件后,双击开始解压安装。我的解压路径为:
D:\Tool\opencv-4.10.0-windows
Visual Studio 2022 新建控制台项目工程,右击项目名,选择属性。
配置头文件库文件路径
配置库文件
配置可执行文件
将
D:\Tool\opencv-4.10.0-windows\opencv\build\x64\vc16\bin
加入环境变量path,注销下电脑即可。或者,将opencv\build\x64\vc16\bin目录下的所有dll文件拷贝到可执行文件的目录即可。
常见问题
error C1083: 无法打开包括文件: “opencv2/opencv.hpp”: No such file or directory
无法打开包括文件,是头文件路径设置有问题。
1>LINK : fatal error LNK1104: 无法打开文件“opencv_world4100d.lib”
链接错误,是库文件路径设置问题。
1>MatchTemplateDetector.obj : error LNK2019: 无法解析的外部符号 “class cv::debug_build_guard::_InputOutputArray const & __cdecl cv::noArray(void)” (?noArray@cv@@YAAEBV_InputOutputArray@debug_build_guard@1@XZ),函数 main 中引用了该符号
1>MatchTemplateDetector.obj : error LNK2019: 无法解析的外部符号 “public: __cdecl cv::Mat::Mat(void)” (??0Mat@cv@@QEAA@XZ),函数 main 中引用了该符号
1>MatchTemplateDetector.obj : error LNK2019: 无法解析的外部符号 “public: __cdecl cv::Mat::~Mat(void)” (??1Mat@cv@@QEAA@XZ),函数 main 中引用了该符号
无法解析的外部符号,是库文件名称设置有问题。
启动时,报缺少dll文件,是环境变量设置问题。
一些小技巧
- opencv的配置建议不要配置成VisualStudio的全局配置,一个项目或者工程单独配置一次,不要图省事。一旦opencv版本较多时,单独配置将会减少很多不必要的麻烦。
- opencv_videoio_ffmpeg4100_64.dll 是视频读写相关的组件,不要随意删除。
- 如果需要进行源码交付,建议将opencv打包到工程目录下,并使用相对路径进行配置。