初次在VS2019中使用OpenCV
这次由于要在大作业中用到图像处理,因此想直接导入openCV中的函数,免去自己写函数的麻烦。但在导入后才发现,问题一个接一个。。。
经过一上午的奋斗,总算可以正常运行程序了。这次就把我遇到的所有问题和解决方法写一下,以免之后再做重复劳动。
关于opencv文件下载就不赘述了,网上有很多资源,也可以到这里下载。这位博主把资源都放在了自己的服务器上,比直接从官网上下载快多了。
Windows系统下载exe
文件即可,下载好文件后,可以把它安装在随便哪个地方,只要知道它的存放路径即可。我放在了D盘上,绝对路径为D:\
。然后就是新建一个VS工程,下面就是我在这个main.cpp
中写的代码:
#include <opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui_c.h>
using namespace cv;
#define MAP_FILE_PATH "map.jpg"
int main()
{
Mat map_img = imread(MAP_FILE_PATH, CV_8UC1);
imshow("img", map_img);
waitKey(0);
return 0;
}
然后就开始了我的受苦之旅。
问题1:无法打开CV源文件
简单来说,就是找不到openCV的文件路径。
解决方法就是在VS项目中添加文件路径。在项目中右击属性,找到配置属性中的“VC++目录”,如下图所示:
-
在包含目录中添加以下路径:
-
D:\opencv\build\include
; -
D:\opencv\build\include\opencv2
.
-
-
在库目录中添加以下路径:
D:\opencv\build\x64\vc15\lib
.
添加完路径后,就可以看到文件中的红色波浪线全消失了,那叫一个开心o( ̄▽ ̄)ブ。
另外需要注意的是,Debug和Release的配置是分开的,也就是说如果这两个都要用到,那么你都需要配置一遍,配置方法都是一样的。
问题2:VS报错LNK2019“无法解析的外部符号”
当我运行程序的时候,出现了一连串相同的错误,都是LNK2019。
出现这个错误是因为链接器没有配置好导致的,可能有两个原因:
- 尝试将64位库链接到32位代码,或将32位库链接到64代码;
- 没有在链接器中添加附加依赖项.
第一个原因检查一下项目的配置属性,把位数调整就可以了,32位的就用x86
,64位的就用x64
。
第二个原因需要添加依赖项。具体步骤如下:
- 右击属性找到“链接器”,找到“链接器”下的输入,如下图所示
-
在附加依赖项中添加lib文件路径
- 若配置是“debug”,则添加
opencv_world420d.lib
; - 若配置是“release”,则添加
opencv_world420.lib
.
- 若配置是“debug”,则添加
420
是openCV的版本号,根据自己下载的版本选择即可,可以到D:\opencv\build\x64\vc15\lib
中查看以上的lib文件。
链接器配置好之后,LNK2019的错误应该就不会出现了。详情可以参照VS常见错误之一:error LNK2019: 无法解析的外部符号
问题3:无法找到opencv_world420d.dll
在完成上述配置后,程序已经可以运行了,VS不会再报错。但在程序运行后,会出现以下系统错误:
上述错误说明系统找不到opencv_world420.dll
文件,但经过搜索后可以发现该文件是存在的,就在D:\opencv\build\x64\vc15\bin
下。
但系统找不到该文件,因此需要我们配置系统的环境变量,写入该文件的存在路径。具体操作如下图所示:
另外,修改完系统变量后可能仍会报上述错误,此时只需要重启一下VS就可以了。
以上就是我遇到的所有问题,经过一番折腾总算是搞定了,可喜可贺。希望对大家能有所帮助。