OpenCV 之 windows cloin cmake mingw 环境搭建

261 阅读3分钟

一.前言

为了方便的学习opencv知识,免去在android上学习时依赖手机的情况。所以想要在windows上面使用cloin来编写opencv代码。在搭建环境时候走了很多弯路,踩了不少的坑,特此写下此篇文章进行记录

二.工具准备

1.下载cloin安装 CLion: A Cross-Platform IDE for C and C++ by JetBrains

2.cmake 下载安装 Download | CMake

3.OpenCV 下载 Releases - OpenCV 此处选择windows 由于是从github上面下载所有速度特别慢。找了一个别人的网站进行下载完全和官网一样,地址为:OpenCV/opencv_contrib国内快速下载 | 绕云技术笔记 (raoyunsoft.com)

4.mingw 下载安装 MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net

image.png 此处有个坑,windows系统不要下载 x86_64-win32 不然在后面的cmake时候 会编译出错,只需要下载x86_64-posix 开头的任意一个都行。下载完成后解压,并将其配置到环境变量。

image.png

    备注,所有的软件我都使用的是最新版

三.开始配置环境

1.打开安装的cmake的安装路径,点击cmake-gui.exe

image.png

image.png

2.分别选择OpenCV的源码路径和camke后的输出路径

image.png

OpenCV的源码路径为 即为工具准备第三步中下载,安装完成后文件目录下的sources目录 如图

image.png

3.点击configure 进行第一次配置,中间会有ffmpeg下载不下来,这个如果用不到就不用管,直接进行第二次配置。如果能用到百度一下自行解决。(此处本人不需要就未处理)

image.png

4.此次配置完成,会出现上图中一堆红色,此时再次点击configure进行第二次配置,配置完成后界面会变成白色。

image.png

5.此时点击Generate,等待完成

image.png

6.当cmake出现如下图代码配置完成

image.png

7.此时进入到cmake后的输出目录,并且在该目录下打开命令行界面 输入 mingw32-make -j8 耐心等待编译完成

image.png

-j8 代码同时使用8个线程编译,该数量可以根据电脑配置修改

8.编译完成后,继续执行 mingw32-make install 生成我们想要的库,结果会在输出目录生成对应的文件与目录

image.png

9.将install 目录下面的 x64\mingw\bin 这个目录配置到环境变量中 不然最后编写的代码无法运行起来(此处踩坑) 到此处配置完成,接下来使用cloin 创建工程编写测试代码

image.png

三.编写测试代码

1.使用cloin创建一个工程,工程创建完成后 修改cmakeList.txt 文件中内容

#指定CMake的最小版本
cmake_minimum_required (VERSION 3.8)
#定义项目名称
project ("study")
# 添加c++ 11标准支持
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories($ENV{CMAKE_INCLUDE_PATH})
set(OpenCV_DIR D:/open_sources/opencv-4.5.5-windows/opencv/mingw-build/install/x64/mingw/lib)
#需要的openCV库
FIND_PACKAGE(OpenCV REQUIRED)
#显示OpenCV的版本号
MESSAGE("OpenCV version : ${OpenCV_VERSION}")
MESSAGE("OpenCV include : ${OpenCV_INCLUDE_DIRS}")
MESSAGE("OpenCV libs11 : ${OpenCV_LIBS}")
MESSAGE("OpenCV DIR : ${OpenCV_DIR}")
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBS})
MESSAGE("OpenCV libs : ${OpenCV_LIBS}")
set(SOURCE main.cpp)

# 将源代码添加到此项目的可执行文件。
add_executable (${PROJECT_NAME} ${SOURCE})

TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})
其中 OpenCV_DIR 的值为你编译 install 后的路径

2.添加测试代码在main.cpp中

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace  std;
int main() {
    Mat mat = imread("d:\1.jpg");
    if(mat.empty()){
        cout << "图片不存在" <<endl;
        return -1;
    }
    imshow("展示图像",mat);
    waitKey(0);
    return 0;
}

3.运行代码,出现以下结果则环境搭建成功

image.png