CLion+Opencv+QT开发相关

news2024/9/25 9:37:45

一、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

  • cmake https://cmake.org/download/

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++类和对象:初始化列表、static成员和友元

目录 一. 初始化列表 1.1 对象实例化时成员变量的创建及初始化 1.2 初始化列表 1.3 使用初始化列表和在函数体内初始化成员变量的效率比较 1.4 成员变量的初始化顺序 1.5 explicit关键字 二. static成员 2.1 static属性的成员变量 2.2 static属性的成员函数 三. 友元 …

废气处理设备远程监控

当今工业迅速的发展&#xff0c;工业带给人们的经济效益显著&#xff0c;而同时污染问题也备受关注。国家环保标准对排放至大气的废气指标提出了更高的要求。面临着环保压力&#xff0c;企业为走可持续发展之路&#xff0c;为维护员工利益、改善工作环境及周边环境不受影响&…

一、Sping框架引入

OCP开闭原则 什么是OCP&#xff1f; OCP是软件七大开发原则当中最基本的一个原则&#xff1a;开闭原则 对什么开&#xff1f;对扩展开放。 对什么闭&#xff1f;对修改关闭。OCP原则是最核心的&#xff0c;最基本的&#xff0c;其他的六个原则都是为这个原则服务的。OCP开闭原则…

计算机行业回暖?看网友怎么说?

就业寒潮之下&#xff0c;去年的应届生们可谓哀嚎一片&#xff0c;不少人晒出自己的0offer秋招战绩。 就连过去无往不利的计算机行业&#xff0c;亦不例外。但今年开始&#xff0c;计算机行业逐渐有了回暖的迹象和讨论。 陆续有不少之前哭诉收获惨淡的计算机专业同学&#x…

防静电和浪涌TVS layout设计要点

电子产品精密化刚看过了CES2023&#xff0c;雷卯的外贸伙伴们看了最新的AR,VR,5G产品&#xff0c;新的电子产品更智能、更复杂&#xff0c;嵌入了脆弱和敏感的集成电路。这些设备的环境往往很恶劣&#xff0c;产生高水平静电和快速瞬态浪涌。这些ESD事件可能会干扰设备&#xf…

IIS之web服务器的安装、部署以及使用教程(图文详细版)

WEB服务器的部署 打开虚拟机后查看已经开放的端口&#xff0c;可以看到没有TCP 80、TCP 443&#xff0c;说明HTTP服务端口没有打开 打开我的电脑—双击CD驱动器 选择安装可选的Windows组件 选择应用程序服务器—打开Internet信息服务—选择万维网服务和FTP服务 一路确…

uniapp-首页配置

为了获取到后台服务器发来的数据&#xff0c;需要配置相应的网络地址。位置在main.js入口文件中。 import { $http } from escook/request-miniprogramuni.$http $http // 配置请求根路径 $http.baseUrl https://api-hmugo-web.itheima.net// 请求开始之前做一些事情 $http.…

Spring-Xml配置

一、Spring 简介 1.简介 文档下载地址&#xff1a;Index of /spring-framework/docs 1.简介 Spring framework 是 Spring 基础框架 学习Spring 家族产品 Spring framework SpringBoot SpringCloud Spring 能用来做什么 开发 WEB 项目 微服务 分布式系统 Spring framew…

云服务HCIE变题当天一把过!分享下学习备考和考试经验

大家好&#xff0c;我是誉天云服务学员刘同学。感谢在誉天的学习&#xff0c;让我在临考变题的情况下通过了云服务HCIE考试&#xff1b;也感谢誉天给我这次机会分享出学习备考和考试的经验。 算起来&#xff0c;我和誉天也是老朋友了&#xff1a;一开始是跟着邹老师学习云计算、…

【JAVA】线程和进程

&#x1f3c6;今日学习目标&#xff1a;线程和进程 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰本期期数&#xff1a;第三期 &#x1f389;专栏系列&#xff1a;JAVA 线程和进程前言一、进程与线程1.进程2.线程二、线程的创建2.1 继…

Pytest自动化框架~权威教程03-原有TestSuite的执行方法

前言TestSuite一直是unittest的灵活与精髓之处, 在繁多的测试用例中, 可以任意挑选和组合各种用例集, 比如smoke用例集, level1用例集, webtest用例集, bug回归用例集等等, 当然这些TestSuite需要我们提前定义好, 并把用例加载进去.Pytest采取的是完全不同的用例组织和运行方式…

有些笑话,外行人根本看不懂,只有程序员看了会狂笑不止

我一直都觉得我们写代码的程序员与众不同&#xff0c;就连笑话都跟别人不一样。 如果让外行人来看我们一些我们觉得好笑的东西&#xff0c;他们根本不知道笑点在哪里。 不信你来瞧瞧&#xff0c;但凡有看不懂的地方&#xff0c;说明你的道行还不够深。 1.大多数人开始学编程时…

论文解读14——XGBoost:A Scalable Tree Boosting System

目录1、文章贡献2、算法推导3、寻找分裂点算法3.1 精确贪心算法3.2 近似算法4、稀疏感知算法5、特征维度的并行化6、XGBoost VS GBDT7、XGBoost局限半年前看了这篇XGBoost的原文&#xff0c;网上解读很多&#xff0c;于是迟迟没有将其中的精髓记录下来&#xff0c;准备重点记一…

从工厂打螺丝到月薪18k测试工程师,我该满足吗?

以前我比较喜欢小米那句“永远相信美好的事情即将发生”&#xff0c;后来发现如果不努力不可能有美好的事情发生&#xff01;01高中毕业进厂5年&#xff0c;创业经商多次战败&#xff0c;为了生计辗转奔波高中毕业后我就进了工厂&#xff0c;第一份工作是做模具加工。从500元一…

1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等

文本抽取任务Label Studio使用指南 1.基于Label studio的训练数据标注指南&#xff1a;信息抽取&#xff08;实体关系抽取&#xff09;、文本分类等 2.基于Label studio的训练数据标注指南&#xff1a;&#xff08;智能文档&#xff09;文档抽取任务、PDF、表格、图片抽取标注等…

网络资源面经2

文章目录Kafka 原理&#xff0c;数据怎么平分到消费者生产者分区消费者分区Flume HDFS Sink 小文件处理Flink 与 Spark Streaming 的差异&#xff0c;具体效果Spark 背压机制具体实现原理Yarn 调度策略Spark Streaming消费方式及区别Zookeeper 怎么避免脑裂&#xff0c;什么是脑…

用Python自己写一个分词器,python实现分词功能,隐马尔科夫模型预测问题之维特比算法(Viterbi Algorithm)的Python实现

☕️ 本文系列文章汇总&#xff1a; &#xff08;1&#xff09;HMM开篇&#xff1a;基本概念和几个要素 &#xff08;2&#xff09;HMM计算问题&#xff1a;前后向算法 代码实现 &#xff08;3&#xff09;HMM学习问题&#xff1a;Baum-Welch算法 代码实现&#xff08…

【数据结构】关于二叉树你所应该知道的数学秘密

目录 1.什么是二叉树&#xff08;可以跳过 目录跳转&#xff09; 2.特殊的二叉树&#xff08;满二叉树/完全二叉树&#xff09; 2.1 基础知识 2.2 满二叉树 2.3 完全二叉树 3.二叉树的数学奥秘&#xff08;主体&#xff09; 3.1 高度与节点个数 3.2* 度 4.运用二叉树的…

算法拾遗二十五之暴力递归到动态规划五

算法拾遗二十七之暴力递归到动态规划七题目一【数组累加和最小的】题目二什么暴力递归可以继续优化暴力递归和动态规划的关系面试题和动态规划的关系如何找到某个问题的动态规划方式面试中设计暴力递归的原则知道了暴力递归的原则 然后设计常见的四种尝试模型如何分析有没有重复…