官网地址(有梯子的可以下载)
CSDN下载地址(我将3.4.10和4.2.0两个版本的打包上传到CSDN,有C币的可以在这里下载)
百度网盘地址 提取码:7tff(我也在百度网盘上传了一份,有条件的可以去网盘下载)
windos10下直接运行exe文件解压到本地即可。
首先,将解压后的OpenCV文件夹下的opencv\build\x64\vc15\bin
全局路径添加到系统环境变量中。(不会有同学不知道怎么添加系统环境变量吧?不会吧,不会吧。如果真不会的话可以自行百度)
其次将刚刚bin
目录下的三个dll文件opencv_ffmpeg341_64.dll
、opencv_world341.dll
、opencv_world341d.dll
都添加到系统PATH可以找到的位置,如C:\Windows\SysWOW64
。
首先打开vs,新建一个项目。
打开刚刚新建项目的属性页。(需要说明的是,可以看到下图中解决方案资源管理器内有ALL_BUILD和ZERO_CHECK,这是因为我是通过在终端cmake编译生成的vs项目,而如果你是直接在vs内新建工程就不会有这两个,所以不用担心。如果有上面那两个的话需要在编译的时候把它们删除即可,因为ALL_BUILD本身就是编译不过的。)
如上图,在VS++目录选项内,在包含目录内添加F:\software\Opencv\opencv\build\include
,即include目录。在库目录内添加F:\software\Opencv\opencv\build\x64\vc15\lib
,即lib目录。在链接器->输入->附加依赖项内添加opencv_world341d.lib
即可。
新建cpp,写入以下代码
#include "opencv2/opencv.hpp"
#include
#include
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
string file = "../images/bmp_test.bmp"; //这里改为你本机的图片路径即可
Mat image;
image = imread(file, 1);
if (!image.data)
{
cout << "No image data" << endl;
return -1;
}
Mat gray_img;
cvtColor(image, gray_img, COLOR_BGR2GRAY);
imshow("gray",gray_img);
cv::waitKey(0);
return 0;
}
输出结果如图。
补充一部分内容。原本我是不打算用VS来编译opencv项目的,最初是想在sublime编辑器写代码(不想用IDE),然后手写CMakeLists.txt,用CMake编译生成Makefile之后,make一下生成可执行文件。但是在实际的操作中遇到了很多问题,查了很多资料,最终还是没有解决,所以折中了一下用VS来编译。
以下内容记录我遇到的问题
1、首先cmake编译遇到找不到OpenCVConfig.cmake的问题
解决方法:windows10下OpenCVConfig.cmake在 x64/vc15/lib文件夹下,所以在CMakeLists.txt中添加OpenCV的目录 set(OpenCV_DIR F:/software/Opencv/opencv/build/x64/vc15/lib)
即可解决。
2、cmake成功生成Makefile之后,make编译出错
报错undefined reference to cv::imread(cv::String const&, int)
等等。我猜测这个问题应该是没有找到正确的include目录,但是修改了很多地方一直没有解决问题,最终也卡在了这里。
总结就到这里,如果哪位同学有相似的经历同时解决了这个问题可以在评论区留言,不胜感激。
END