windows10下配置OpenCV+CMake+VS

文章首发于我的个人博客

一、下载OpenCV(可执行文件)

官网地址(有梯子的可以下载)

CSDN下载地址(我将3.4.10和4.2.0两个版本的打包上传到CSDN,有C币的可以在这里下载)

百度网盘地址 提取码:7tff(我也在百度网盘上传了一份,有条件的可以去网盘下载)

二、解压OpenCV

windos10下直接运行exe文件解压到本地即可。

windows10下配置OpenCV+CMake+VS_第1张图片

三、配置环境变量

首先,将解压后的OpenCV文件夹下的opencv\build\x64\vc15\bin全局路径添加到系统环境变量中。(不会有同学不知道怎么添加系统环境变量吧?不会吧,不会吧。如果真不会的话可以自行百度)

windows10下配置OpenCV+CMake+VS_第2张图片

其次将刚刚bin目录下的三个dll文件opencv_ffmpeg341_64.dllopencv_world341.dllopencv_world341d.dll 都添加到系统PATH可以找到的位置,如C:\Windows\SysWOW64

四、配置VS

首先打开vs,新建一个项目。

打开刚刚新建项目的属性页。(需要说明的是,可以看到下图中解决方案资源管理器内有ALL_BUILDZERO_CHECK,这是因为我是通过在终端cmake编译生成的vs项目,而如果你是直接在vs内新建工程就不会有这两个,所以不用担心。如果有上面那两个的话需要在编译的时候把它们删除即可,因为ALL_BUILD本身就是编译不过的。)

windows10下配置OpenCV+CMake+VS_第3张图片

如上图,在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;
}

输出结果如图。

windows10下配置OpenCV+CMake+VS_第4张图片


补充一部分内容。原本我是不打算用VS来编译opencv项目的,最初是想在sublime编辑器写代码(不想用IDE),然后手写CMakeLists.txt,用CMake编译生成Makefile之后,make一下生成可执行文件。但是在实际的操作中遇到了很多问题,查了很多资料,最终还是没有解决,所以折中了一下用VS来编译。

以下内容记录我遇到的问题

1、首先cmake编译遇到找不到OpenCVConfig.cmake的问题

windows10下配置OpenCV+CMake+VS_第5张图片

解决方法:windows10下OpenCVConfig.cmake在 x64/vc15/lib文件夹下,所以在CMakeLists.txt中添加OpenCV的目录 set(OpenCV_DIR F:/software/Opencv/opencv/build/x64/vc15/lib)即可解决。

2、cmake成功生成Makefile之后,make编译出错

windows10下配置OpenCV+CMake+VS_第6张图片

报错undefined reference to cv::imread(cv::String const&, int) 等等。我猜测这个问题应该是没有找到正确的include目录,但是修改了很多地方一直没有解决问题,最终也卡在了这里。

总结就到这里,如果哪位同学有相似的经历同时解决了这个问题可以在评论区留言,不胜感激。

END

你可能感兴趣的:(工具使用)