C++ & opencv配置(win10)

C++ & opencv配置(win10)

安装环境:

c++

cmake

opencv

CLion

一、C++编译环境配置

GCC 官网提供的 GCC 编译器是无法直接安装到 Windows 平台上的,如果我们想在 Windows 平台使用 GCC 编译器,可以安装 GCC 的移植版本。

目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种,分别为 MinGW 和 Cygwin。其中,MinGW 侧重于服务 Windows 用户可以使用 GCC 编译环境,直接生成可运行 Windows 平台上的可执行程序,相比后者体积更小,使用更方便;而 Cygwin 则可以提供一个完整的 Linux 环境,借助它不仅可以在 Windows 平台上使用 GCC 编译器,理论上可以运行 Linux 平台上所有的程序。

MinGW配置:

下载地址:https://jaist.dl.sourceforge.net/project/mingw-w64/Toolchains targetting Win64/Personal Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z

下载之后解压:

配置到系统变量里面:

打开命令行,输入gcc -v,出现版本信息即配置成功:

二、安装CLion

CLion是jetbrain家的产品,跟pycharm的界面类似。

直接去官网下载安装就好(https://www.jetbrains.com/clion/download/#section=windows)

clion中选择使用上面我们安装的mingw:

在设置里面选择好对应的文件就ok

三、opencv环境配置

部分参考了这篇博文:https://blog.csdn.net/Cui_Hongwei/article/details/104693174和https://www.cnblogs.com/ericling/p/15586751.html

下载cmake,https://cmake.org/download/

我下载的3.23版本,如图,解压

在bin目录下,双击打开cmake-gui

在上面过程中,可能会有几个包下载失败报错。如果报错,就手动从下面这个链接里面下载三个文件,放到opencv/mingw-build/3rdparty/ffmpeg/里面,然后重新configure(由于里面的脚本命令没有更改,所以还是会报错认为缺少那三个文件,但是没关系,忽略就可以),然后把点generate生成

接下俩使用git编译(很多教程里说直接用cmd会出错,我没试过,用git反正是可以的)

在mingw-build目录下打开git bash,

输入mingw32-make,开始编译(会比较慢)

然后再输入mingw32-make install

最后会在mingw-build目录下生成一个install文件夹:

然后将bin路径加到系统变量里面就可以了

然后打开cmd,输入opencv_version,可以看到版本信息:

四、使用opencv

在clion中新建一个工程,名字叫Test

设置CMakeList.txt:

cmake_minimum_required(VERSION 3.15)
project(C_Test)

set(CMAKE_CXX_STANDARD 14)
# 可以将下面的路径单独添加到环境变量OpenCV_DIR
set(OpenCV_DIR "D:\\Program Files\\opencv\\mingw-build\\install")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
# "C_Test"与你工程的命名相关,注意和原来CMakeList.txt中的声明一致
add_executable(C_Test main.cpp)

target_link_libraries(C_Test ${OpenCV_LIBS})

main.cpp:(lena.jpg自行下载,放到项目目录中,然后改成绝对路径)

#include "iostream"
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main() {
    Mat img = imread("lena.jpg");
    if (img.empty()) {
        cout << "Error" << endl;
        return -1;
    }
    imshow("Lena", img);
    waitKey();
    return 0;
}
posted @ 2022-06-22 11:17  彼岸的客人  阅读(971)  评论(0)    收藏  举报