CLion+Opencv+QT开发相关

一、QT安装和配置

其实我并没有直接在Qt上开发,下载Qt而是因为:

  • CLion可以通过Qt的MinGW作为Toolset,并且可以将Qt creator作为external tool;

  • 在进行Opencv的编译安装中可以用Qt自带的MinGW进行编译和安装,不用另外下载MinGW

总之虽然不直接用Qt,但Qt拿来单纯作为界面GUI设计也挺方便的。(我日常在Qt creator设计修改界面,后在CLion进行ui逻辑代码编写)。不过Qt安装时间比较早,并没有做记录,在此推荐一下

QT介绍和安装指引

值得注意的是安装完后需要添加环境变量,依次按顺序将安装目录下的bin文件配置到系统path变量下,就不会出现缺失dll文件错误了。

二、CLion安装配置

  1. 使用Clion进行树莓派的远程开发-C语言

使用Clion进行树莓派的远程开发-C语言

Clion环境配置,安装完成后在Clion中配置:

  • 选择settings->Tools->SSH Configurations,在右侧选择“+” 添加树莓派SSH连接,完成后可以点击 Test Connection测试是否成功:

图1 Clion连接树莓派成功

  • 选择settings->Build,Execution,Deployment->Toolchains,在右侧点击 “+“ 添加一个 Remote Host选项:

图2 添加Remote Host

图3 添加Remote Host的Cmake具体信息,一般会自动检索到,检索不到可以直接选定

  • 选择 CMake 项,在右侧Toolchain中选择上一步配置的cmake

图4 选择Cmake选项

  • 设置映射位置

图5 设置树莓派映射位置,编译构建都在这个文件夹进行

  • 常见问题:

CLion远程开发external libraries不同步问题,即在树莓派上可以看到需要用到的库已经安装好了,但是在CLion上的external libraries上并没有更新,导致编译报错。库不同步问题解决

点击tool>>Resync with Remote Host即可,需更新一段时间。

图6 库不同步问题解决

  1. 如何申请正版JetBrain专业版账号

如果是要进行远程开发,需要用到CLion的SSH功能的,若是学生那么可以通过学生邮箱去JetBrain的官网申请一年的全家桶免费使用权(到期可以重新申请,续期)。

JetBrain教育申请

  1. 在windows上进行CLion开发

之前在树莓派上写的程序可能需要直接在windows平台运行,而在raspberry pi上用到了opencv库,本文的重点也在于opencv在windows上的安装编译。详见第三章。以下为CLion上调用opencv库示例。

cmake_minimum_required(VERSION 3.23)
project(win_test)

set(CMAKE_CXX_STANDARD 14)

add_executable(win_test main.cpp)

set(OpenCV_DIR D:/opencv/mingw_build/install)
find_package(OpenCV REQUIRED)
target_link_libraries(win_test ${OpenCV_LIBS})
#include <iostream>
#include <cstring>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

int main() {
    auto path = R"(D:\CLionProject\win_test\test.png)";//图片地址
    Mat img = imread(path);
    if (img.empty()) {
        cout << "Error" << endl;
        return -1;
    }
    namedWindow("pic", WINDOW_AUTOSIZE);
    imshow("pic", img);
    cout<<"Success!"<<endl;
    waitKey();
    return 0;
}

图7 成功调用opencv

三、windows编译安装opencv

首先先确认是否安装Qt creator,本文以Qt自带MinGW作为工具而不另外安装MinGW。

  1. 前置软件安装

  • Qt creator

  1. 下载opencv并解压

前往opencv官网https://opencv.org/releases/下载opencv压缩包,我下载的是opencv 4.7.0。并解压到你想安装的位置。如我的位置:D:\opencv。

图1 下载安装4.7.0

图2 解压后的文件夹

  1. 用cmake进行configure和generate

  • 首先确认是否将Qt的MinGW加入环境变量,可以参考第一章。

打开cmd,输入

echo %PATH%

图3 确认MinGW可用

  • 打开cmake软件设置sources和build的位置,mingw_build即我在解压后的opencv文件夹创建的build文件夹。

图4 sources和build位置

设置好之后点击Configure,稍等一段时间。首先Configure done后进行以下操作:

WITH_OPENGL

勾选

WITH_IPP

不勾选

ENABLE_PRECOMPILED_HEADERS

不勾选

OPENCV_ENABLE_ALLOCATOR_STATS

不勾选

OPENCV_GENERATE SETUPVARS

不勾选

BUILD_PROTOBUF

不勾选

WITH_PROTOBUF

不勾选

图5 不勾选python相关

在再次Configure done之后上拉查看错误,一般还会出现以下错误。这是因为D:\opencv\sources\.cache中这三个文件下载失败都是0KB,因此需要另外下载替换。

FFMPEG: Download: opencv_videoio_ffmpeg.dll
Try 1 failed
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
FFMPEG: Download failed: 35;“SSL connect error”
FFMPEG: Download: opencv_videoio_ffmpeg_64.dll
Try 1 failed
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
FFMPEG: Download failed: 28;“Timeout was reached”
FFMPEG: Download: ffmpeg_version.cmake
Try 1 failed
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
FFMPEG: Download failed: 28;“Timeout was reached”
  • 查看ffmpeg版本,并下载对应版本

在D:\opencv\sources\3rdparty\ffmpeg文件夹中的ffmpeg.cmake文件,以文本文件打开,可以查看对应ffmpeg版本。

图6 ffmpeg版本查看

我的opencv4.7.0是ffmpeg/4.x 20221225这个版本。前往https://github.com/opencv/opencv_3rdparty下载对应文件。下载整个压缩包,若你也是4.7.0,也可从https://download.csdn.net/download/weixin_44855366/87522947下载。

图7 下载对应ffmpeg文件

下载完之后解压将D:\opencv\opencv_3rdparty-ffmpeg-4.x_20221225\ffmpeg中的对应三个文件复制到D:\opencv\sources\.cache\ffmpeg,注意提前将原来三个文件的前缀记录,然后将复制进来的三个文件进行添加前缀。

图8 下载后ffmpeg的三个文件

图8 复制后添加前缀

  • 再次进行Configure,这时候应该不会再报错,若报错则对应错误去百度,一般是需要勾选/取消勾选某个选项。然后点击Generate,至此cmake方面工作已经完成。

图9 Generating done

  1. 在cmd上进行编译和安装

打开cmd,首先cd到opencv所在mingw_build文件夹,然后进行编译,若编译不通过则根据报错百度,一般也是需要回到cmake勾选/取消勾选某选项,然后重新configure和generate。

cd D:\opencv\mingw_build
mingw32-make -j 8

图10 100%build完成,结果图

若成功编译,那么继续输入开始install。至此opencv已安装完成。

mingw32-make install

图11 install成功

  1. 配置环境变量

新建三个用户变量:

变量名:LD_LIBRARY_PATH
变量值: D:\opencv\mingw_build\install\x64\mingw\lib
变量名:OPENCV_INCLUDE
变量值:D:\opencv\mingw_build\install\include
变量名:OPENCV_LIB
变量值:D:\opencv\mingw_build\install\x64\mingw\lib

注意:用户环境的正确动态库的路径需要根据自己的实际情况进行更改路径。

另外在用户变量 path 下新增两条路径,至此,用户环境变量设置完成。

D:\opencv\mingw_build\install\x64\mingw\bin
D:\opencv\mingw_build\install\x64\mingw\lib

四、CLion测试opencv是否可用

以下为CLion上调用opencv库示例。

cmake_minimum_required(VERSION 3.23)
project(win_test)

set(CMAKE_CXX_STANDARD 14)

add_executable(win_test main.cpp)

set(OpenCV_DIR D:/opencv/mingw_build/install)
find_package(OpenCV REQUIRED)
target_link_libraries(win_test ${OpenCV_LIBS})
#include <iostream>
#include <cstring>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

int main() {
    auto path = R"(D:\CLionProject\win_test\test.png)";//图片地址
    Mat img = imread(path);
    if (img.empty()) {
        cout << "Error" << endl;
        return -1;
    }
    namedWindow("pic", WINDOW_AUTOSIZE);
    imshow("pic", img);
    cout<<"Success!"<<endl;
    waitKey();
    return 0;
}

图12 成功调用opencv


版权声明:本文为weixin_44855366原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。