虽说网上有不少的教程,但按照步骤一步步执行到了最后,还是出现了问题。
对原理一窍不通,因此在此耗费了太多太多时间,所以决定把整个过程写下来,希望对你有所帮助。
后补:
才发现OpenCV官网上已经有详细的doc介绍。
这里附上doc文档。(更新于2020-07-02)
这是国内的网站,内容应该是机翻。
如何使用OpenCV在“Microsoft Visual Studio”中构建应用程序
官网地址:https://opencv.org/releases/
随意选择版本,我选择的是此时最新的430版本。
(官网被墙,下载速度很慢。CSDN上有,但需要较高积分。有需要的可以滴滴我。)
后补:
我已经上传了资源,里面对应有Windows、iOS、Android、以及sources四个版本的,零积分下载。
OpenCV - 4.3.0 合集.zip
双击程序运行即可。
不过
一定要记住安装的位置!
一定要记住安装的位置!
一定要记住安装的位置!
选择好目录之后单击Extract(提取),等待完成,完成后自动关闭。
环境变量:在操作系统中用来指定操作系统运行环境的参数。
这里用到的环境变量是PATH
。
当要求操作系统运行一个程序,而没有告诉系统,程序所在位置的完整路径时,系统除了在当前目录下面寻找此程序外,还会到PATH
中指定的路径去找。
简单点就是系统会在PATH的路径中,寻找需要执行的可执行文件(.exe)。
环境变量中包含两大类,一类是用户变量,另一类是系统变量。
用户变量设置的环境变量只针对当前用户,更换用户时设置会失效。
系统变量设置应用于整个操作系统中。
这里我们需要设置OpenCV库的路径到环境变量中。
路径如下
opencv\build\x64\vc15\bin
根据以上路径,进入到bin目录下。随后复制上方导航栏的地址。
接下来的操作
库文件包含两种,一种是静态库,另一种是动态库即DLL(Dynamic Link Library)。
静态库在程序的链接阶段被复制到了程序中,即相当于把静态库中代码复制到程序中。
动态库在程序的链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。
使用动态库的优点是系统只需载入一次动态库,不同的程序可以得到内存中相同的动态库的副本,节省内存。
根据路径opencv\build\x64\vc15\bin
找到以下动态库文件。
opencv_world430.dll
opencv_world430d.dll
其中最后三个数字是版本编号,430代表OpenCV – 4.3.0。不同版本编号略微不同。
带有d的动态库是debug版本。
将以上动态库复制到以下路径中
C:\Windows\SysWOW64
根据路径opencv\build\x64\vc15\bin
找到以下动态库文件。
opencv_videoio_ffmpeg430_64.dll
将以上动态库复制到以下路径中
C:\Windows\System32
以下配置均是导入OpenCV库,与环境变量类似。
视图 -> 其他窗口 -> 属性管理器
选中属性管理器中 Debug | x64
添加以下路径
opencv\build\include\
opencv\build\include\opencv2
添加以下路径
opencv\build\x64\vc15\lib
添加以下路径
opencv_world430d.lib
opencv_world430.lib
测试时,请将上方Debug | x86
改为 Debug | x64
。
#include
//需要用到OpenCV库,下面导入三个常用的头文件
#include
#include
#include
using namespace std;
using namespace cv;
int main()
{
const char * img_path = R"(D:\1.jpg)"; //图片的绝对路径
Mat img = imread(img_path); //原图的RGB矩阵
namedWindow("img", WINDOW_NORMAL); //可调节窗口大小
imshow("img", img); //展示图像
waitKey(0); //等待一个键盘输入
return 0;
}
测试结果正常。
opencv\build\include\
路径少了最后一个\
,然后程序能编译,但是死活无法得出正确的答案。