clion + opencv环境搭建

    clion是一个jetbrains提供的c++开发环境,和idea,pycharm等开发工具类似,界面有很多相似的地方。

    clion内置了一个mingw的编译环境,自带了gcc,g++等命令,安装完clion之后,我们新建项目,它会使用内置的mingw环境。

    

    这样,我们就不用额外安装mingw环境了。

    后面为了使用opencv, 我们需要通过源码编译符合自己本机的opencv库。

    需要安装cmake,这个带gui。我本机的版本是:3.14。

    另一个就是需要下载windows下的opencv-4.5.5-vc14_vc15.exe,这个可执行程序解压之后,有源码和自带的opencv依赖库,依赖库,通过visual studio来搭建opencv的环境没有任何问题,但是通过clion来搭建,就各种报错。所以还是需要通过它的源码来编译安装一次。

    本机可能还需要python环境,我这里安装的python3.10是可以的,没有必要使用python2版本。

    前面的准备工作做好了,就可以进行编译了。

    我们运行opencv-4.5.5-vc14_vc15.exe ,它可以加压出源码sources和build版本的opencv。

    

     我们需要使用sources源码。mingw_build目录是我们新建的,用来存放opencv编译后的结果。打开cmake-gui,选择源码,构建目录,点击Configure按钮,设置生成器类型MinGW Makefiles,点击Finish开始配置:

    配置过程中,可能会因为下载opencv_video_io_ffmpeg.dll和opencv_video_io_ffmpeg_64.dll失败而报错,我们根mingw_build/CMakeDownloadLog.txt 中提示的githubusercontent地址手动下载这两个文件到sources/3rdparty/ffmpeg目录下:

    configure没有报错,提示done之后,就可以generate。

    前面安装了clion,自带了mingw编译环境,这里为了后续执行命令方便,可以把mingw可执行程序目录加入环境变量Path中:

D:\Program Files\JetBrains\CLion 2023.1.2\bin\mingw\bin

    最后还需要在命令行下执行编译命令。命令行下进入mingw_build目录,然后执行mingw32-make -j4编译,后面执行mingw32-make install安装。

    mingw32-make install之后,mingw_build目录下会生成一个install目录,这里就是编译好的opencv库。

 

    为了避免opencv程序运行是缺少动态链接库,我们把install\x64\mingw\bin目录也加入环境变量的Path中。

E:\opencv\mingw_build\install\x64\mingw\bin

    在clion中新建项目,指定存储目录,会生成一个CMakeList.txt,我们根据自己编译的opencv环境来进行如下设置:

cmake_minimum_required(VERSION 3.25)
project(opencvtutorial)

set(CMAKE_CXX_STANDARD 17)




set(OpenCV_DIR E:/opencv/mingw_build/install)
find_package(OpenCV 4 REQUIRED)
include_directories(E:/opencv/mingw_build/install/include)
add_executable(opencvtutorial main.cpp)
target_link_libraries(opencvtutorial ${OpenCV_LIBS})

     这里OpenCV_LIBS设置的环境变量为:

E:\opencv\mingw_build\install\x64\mingw\lib

    就是编译安装之后的install\x64\mingw\lib目录。 

    CMakeList.txt主要添加包含目录,就是程序中引入的opencv相关头文件,不会报找不到问题,设置库目录,就是把opencv相关的lib依赖加入项目中,避免编译报错。 

    编写代码:

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/dnn/dnn.hpp>

using namespace std;
using namespace cv;

dnn::Net net;

int main() {
    cout << CV_VERSION << endl;
    string onnxfile = "E:\\workspace\\python\\aitutorial\\test.onnx";
    net = dnn::readNetFromONNX(onnxfile);
    if (!net.empty()) {
        float value = 1024;
        Mat inputBlob = Mat(1, 1, CV_32F, Scalar(value));
        net.setInput(inputBlob, "input");
        Mat output = net.forward("output");
        cout << "input value : " << value << endl;
        cout << "output : " << output.at<float>(0, 0) << endl;
    }
    waitKey(0);
    return 0;
}

     运行打印结果如下:

 

   我通过直接下载的opencv-4.5.5-vc14_vc15.exe运行生成的opencv/build结果,可以通过visual studio配置并成功运行opencv示例,但是在clion这里怎么都不行,所以就通过mingw环境编译了一次opencv,很幸运,最后成功了,看来不同的工具对应的环境还是差别很大的。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年9月8日
下一篇 2023年9月8日

相关推荐

此站出售,如需请站内私信或者邮箱!