Ubuntu 18.04 LTS中cmake-gui编译opencv-3.4.16并供Qt Creator调用

2023-10-17 20:04

本文主要是介绍Ubuntu 18.04 LTS中cmake-gui编译opencv-3.4.16并供Qt Creator调用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、安装opencv

1.下载opencv-3.4.16的源码并解压
2.在解压后的文件夹内新建文件夹build以及opencv_install
3.启动cmake-gui并设置

sudo cmake-gui

(1)设置界面中source及build路径
在这里插入图片描述
(2)点击configure,选择第一个default项目,即默认本地编译器
在这里插入图片描述
(3)设置prefix,即安装路径
之前我在默认路径/usr/local/下已经安装交叉编译结果opencv-3.4.16-gcc-arm
这里我选择home文件夹
在这里插入图片描述
选择需要的库,我采用默认的。
博文(https://blog.csdn.net/zhiyuan2021/article/details/131407526)给了两个建议:
第一个建议是:在CMAKE_BUILD_TYPE 值处输入RELEASE,我查了一下,默认采用release方式编译,空着就行。
第二个建议是:在OPENCV_EXTRA_MODULES_PATH中填写opencv_contrib的路径,但我在configure时报错,好像是名称重复。等后面需要的时候,我再编译opencv_contrib吧。这次保留为空,这样configure就可以通过了。
在这里插入图片描述
也就是说,我没有采用这两个建议。

(4)依次点击configure, generate,之后关闭cmake-gui

4.进入opencv-3.4.16内的build文件夹,cmake-gui已经在其中生成了编译中间文件
执行:

sudo make -j4

耐心等待结束!!!

执行:

sudo make install

完成opencv安装。
注意:build文件夹不要删除,后期如果删除本次安装的opencv-3.14.16,可以再次进入它并执行

sudo make uninstall

5.设置 /etc/ld.so.conf.d/opencv.conf,否则在第二部分Qt Creator编译OpenCV程序环节会出现如下错误

报错:
…/lib/libopencv_core.so.3.4: cannot open shared object file: No such file or d…
原因是之前用cmake对opencv-3.4.16进行了交叉编译(详见本人博客),并设置了opencv.conf。
本地使用时的平台为x86_64,因此,需要修改 /etc/ld.so.conf.d/opencv.conf
参考博文:https://blog.csdn.net/rong11417/article/details/103905794
修改后的opencv.conf:
在这里插入图片描述
注意:交叉编译时,需要再改一下opencv.conf中的路径。

二、Qt Creator运行opencv程序

安装qt及qt creator详见本人博文。

1.qt creator建立纯c++工程
在这里插入图片描述记得选择编译器为qmake,否则工程中不会存在.pro文件,后期为工程添加头文件和库的路径时麻烦!!!
(坑:我之前选择了cmake,工程中存在CmakeLists.txt,我对它不熟,没有搞清楚如何添加路径。此外,网上大部分博文采用.pro文件的方式)
在这里插入图片描述
2.在main.cpp中写入opencv的程序
在这里插入图片描述

#include <iostream>using namespace std;
#include "opencv2/core/core.hpp"
#include "opencv2/opencv.hpp"
using namespace cv;int main()
{Mat img = imread("/home/lyc/gcc-arm-projects/opencvTest1017_V2/plane.jpg");imshow("plane", img);waitKey(0);//cout << "Hello World!" << endl;return 0;
}

注意:图片路径为绝对路径,之前用"plane.jpg"方式报imshow的width和height为0的错误,说明图片读取失败。

3.在.pro文件中设置包含的头文件和库的路径
在这里插入图片描述

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qtSOURCES += \main.cppINCLUDEPATH += /home/lyc/Exe/opencv-3.4.16-for-x86_64/opencv_install/include \/home/lyc/Exe/opencv-3.4.16-for-x86_64/opencv_install/include/opencv \/home/lyc/Exe/opencv-3.4.16-for-x86_64/opencv_install/include/opencv2LIBS += /home/lyc/Exe/opencv-3.4.16-for-x86_64/opencv_install/lib/libopencv_*
#LIBS += /home/lyc/Exe/opencv-3.4.16-for-x86_64/opencv_install/lib/lib*.so*

3.编译、运行工程
在这里插入图片描述
得到显示的图像
在这里插入图片描述至此,记录结束!!!

这篇关于Ubuntu 18.04 LTS中cmake-gui编译opencv-3.4.16并供Qt Creator调用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/227645

相关文章

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用