【ubuntu18+QT12+OpenCV4环境配置】

2023-05-16

ubuntu18+QT12+OpenCV4环境配置

前些天编译了最新版本opencv4,但是电脑内还有个opencv3.2,有时候二者共享链接库文件即libopencv*.so.XX,之类的路径没有配好的话,即使是使用简单的imread()函数,在QT中也会出现错误:

mainwindow.cpp:33: error: undefined reference to `cv::imread(cv::String const&, int)'

mainwindow.cpp:36: error: ‘CV_BGR2RGB’ was not declared in this scope
     cvtColor(src,src,CV_BGR2RGB);
                      ^~~~~~~~~~

另外在opencv4中cvtColor()函数第三个参数有点变化:

COLOR_RGB2GRAY取代了CV_RGB2GRAY,以此类推其他色彩空间。

磨刀不误砍柴工。所以有必要再把Ubuntu 电脑内的opencv环境变量配置再弄清楚。

首先检查main.cpp查看头文件是否有问题,一般情况下出现上面两种错误,说明Qt中opencv的环境变量位置不正确。

即通过修改.pro文件:

.pro文件末行添加如下路径:

INCLUDEPATH += /usr/local/include \
               /usr/local/include/opencv4 \
               /usr/local/include/opencv4/opencv2

LIBS += /usr/local/lib/libopencv*

稍微说明一下上面的路径:

INCLUDEPATH 为自己为Ubuntu电脑所编译的opencv的头文件目录(也可称为include目录)

LIBS 为Ubuntu电脑内opencv的共享链接库(.so.4.1即版本号),在windows中被称为动态链接库(即.dll文件也是带有版本号的)。

Ubuntu中opencv的共享链接库为(我编译的是4.1版本因此为):

libopencv_xphoto.so.4.1

libopencv_xfeatures2d.so.4.1等等(许多图像处理可用到的库我就不一一列举)

因此可以在QT中LIBS += /usr/local/lib/libopencv* 设置*通配符即可,而不用一一都给写上(PS:如果不嫌麻烦也可都写上,效果一样)

重点来了:

1.如何确定自己的共享链接库位置以及版本?

ubutnu终端中输入:

ldconfig -p |grep opencv

默认情况下编译opencv4等其他版本如果没有修改CMAKE_PREFIX_PATH中的路径。则都会存在/usr/local/lib目录下。

于是lib库目录就为:LIBS += /usr/local/lib/libopencv*

usr即(Unix system resources)下。(/usr/lib下也有一个opencv3.2版本,这个貌似是之前用的其他的一些程序安装的。)

注意:如果结果没有自己想要的opencv版本,此时需要查看一下系统环境变量中共享链接库搜索位置了!!!

终端执行:

cd /etc/ld.so.conf.d/
ls
sudo vi opencv.conf 

 将/usr/local/lib ,/usr/lib编辑写入。ESC 后wq保存退出即可。

/usr/lib/x86_64-linux-gnu/(这条可以不加,因为我的低版本opencv的lib在这里)

2.如何确定ubuntu下想用的OpenCV版本Inlcude路径?

在比较新的opencv版本中一般只包括一个头文件#include<opencv2/opencv.hpp>就能实现大多数功能。这是因为在新的版本中一些core等模块的头文件都给统一进去了。

因此,如何给QT配置正确的头文件路径呢?

Ubuntu终端依次打开::

sudo vi /etc/ld.so.conf

编辑后保存。

将自己编译的opencv4头文件路径添加进去。

include /usr/local/include

include /usr/local/include/opencv4

include /usr/local/include/opencv4/opencv2

更新并保存配置:

sudo ldconfig

注意:如果找不到/usr/local路径,就要去看一下路径在不在环境变量内:没有的话添加如下图内容即可。

sudo vi /etc/bash.bashrc

以上两个步骤即完成了Opencv4配置工作。下面回到QT中实践。

3.QT5.12+Opencv4实践

1.打开QT Creator,新建一个项目名为test,选择Qt Consle Applacation后面一直确定默认就行了,注意一下项目路径。

2.test.pro文件:添加下面内容:
 

INCLUDEPATH+=/usr/local/include \
            /usr/local/include/opencv4 \
            /usr/local/include/opencv4/opencv2

LIBS += /usr/local/lib/libopencv*

3.源程序main.cpp中实现一个打开图片功能:(这里路径注意双斜杠,我的单斜杠总是报错。。)

#include <QCoreApplication>
#include<opencv2/opencv.hpp>
using namespace cv;

int main(int argc, char *argv[])
{
    Mat src;
    src=imread("//home//ziyuan//Documents//Tracking//2B_1.jpg");
    namedWindow("src",0);
    imshow("src",src);
    waitKey(0);
    return 0;
}

结果会打开一个控制台程序窗口和一个图片显示窗口:

完毕,可以开始其他内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ubuntu18+QT12+OpenCV4环境配置】 的相关文章

  • 【一学就会的ROS基础入门教程 】03-1 ROS基础编程:ROS工作空间的创建、话题topic的发布与接收、以及话题消息的自定义使用

    一学就会的ROS基础入门教程 03 1 ROS基础编程 xff1a ROS工作空间的创建 话题topic的发布与接收 以及话题消息的自定义使用 文前白话1 创建工作空间与功能包关于工作空间的介绍创建开发工作空间主要的终端操作命令步骤创建功能
  • 【Deep-sort多目标跟踪流程及其改进方法的解读】

    Deep sort多目标跟踪流程及其改进方法的解读 文前白话相关的文章 资源链接流程及其改进方法的梳理一 多目标跟踪的流程二 Sort 与 deepSort 的对比三 DeepSort主要的跟踪流程四 关于DeepSort中部分模块原理的理
  • 【IEEE论文投稿word中双栏情况下插入单栏效果图片】

    IEEE论文投稿word中双栏情况下插入单栏效果图片 word中双栏情况下插入单栏效果图片流程 xff1a word中双栏情况下插入单栏效果图片流程 xff1a 1 光标放在要插入图片的地方 xff0c 选择 布局 gt gt gt 分隔符
  • 【相机标定&基于消失点的外参标定】

    相机标定 amp 基于消失点的外参标定 文章一 xff1a Camera calibration using two or three vanishing points文章二 xff1a Online Extrinsic Camera Ca
  • 【Ubuntu20.04安装 ROS2-galactic】

    Ubuntu20 04 安装 ROS2 galactic 按照官网流Ubuntu20 04 安装 ROS2 galactic程在终端依次执行命令就行 xff1a 安装流程链接 install ros 2 package 执行到最后一步 xf
  • 【labelme格式json转为labelimg格式的xml(VOC)】

    64 TOC readme 用labelme标注图片 xff0c 得到的是json格式文件 xff0c 有时候需要voc格式的数据 xff0c 可以使用以下转换脚本 xff0c 只需把文件路径替换 code span class token
  • 详解MYSQL数据库密码的加密方式及破解方法(1)

    转自 http hi baidu com davice li blog item 5f5b470be3307e32b0351db5 html MYSQL数据库用户密码跟其它数据库用户密码一样 xff0c 在应用系统代码中都是以明文出现的 x
  • 2020-11-15 强引用、软引用、弱引用、幻象引用有什么区别

    强引用 xff08 34 Strong 34 Reference xff09 普通对象引用 xff0c 只要还有强引用指向一个对象 xff0c 就能表明对象还 活着 xff0c 垃圾收集器不会碰这种对象 对于一个普通的对象 xff0c 如果
  • RAID(独立磁盘冗余阵列)

    RAID 0 数据从内存缓冲区写入磁盘时 xff0c 根据磁盘数量将数据分成N份 xff0c 这些数据同时并发写入N块磁盘 xff0c 使得数据整体写入速度是一块磁盘的N倍 xff1b 读取的时候也一样 xff0c 因此具有极快的数据读写速
  • printf()函数常用格式控制

    格式字符含义d以十进制形式输出有符号整数o以八进制形式输出无符号整数x X以十六进制形式输出无符号整数u以十进制形式输出无符号整数f以小数形式输出单 双精度浮点数c输出单个字符s输出字符串p打印指针地址
  • getchar()函数使用要点

    注意点 xff1a 该函数一次只能读取一个字符 xff0c 但只在键盘上输入一个字符 xff08 回车外 xff09 时 xff0c getchar 函数读不到任何字符 xff0c 只有按下回车之后getchar 函数才会真正读取字符 键盘
  • 例子程序1:读取文件内容并打印到屏幕上

    文件名 xff1a 作者 xff1a kehanxin 时间 xff1a 说明 xff1a 读取特定文件paper txt中内容并打印在屏幕上 span class hljs comment include lt stdio h gt sp
  • 复制字符串strcpy()函数

    strcpy 函数原型 xff1a span class hljs preprocessor include lt string h gt span span class hljs keyword char span span class
  • Linux系统组成

    Linux一般有4个主要部分 xff1a 内核 Shell 文件系统 应用程序 Shell是一个命令解释器 xff0c 它解释用户输入的命令并且把它们送到内核执行 目前常见的Shell有Bourne Shell sh Korn Shell
  • 在VC++6.0中嵌入汇编

    span class hljs preprocessor include lt stdio h gt span span class hljs keyword int span main span class hljs keyword in
  • VS Code For Web 深入浅出 -- 进程间通信篇

    在上一篇中 xff0c 我们一起分析了 VS Code 整体的代码架构 xff0c 了解了 VS Code 是由前后端分离的方式开发的 且无论前端是基于 electron 还是 web xff0c 后端是本地还是云端 xff0c 其调用方式
  • QtMath:通用数学函数

    头文件 xff1a include lt QtMath gt 一 描述 这些函数是 C 或标准模板库中不可用的基本数学运算的部分方便定义 二 宏成员 M E xff1a 自然对数的底 xff0c e 61 exp 1 M LOG2E xff
  • 深入剖析PE文件 (告诉你exe文件打开后是依据什么来创建进程并在系统中运行)

    转自 深入剖析PE文件 告诉你exe文件打开后是依据什么来创建进程并在系统中运行 转载自http lwglucky blog 51cto com 1228348 283812 PE文件是Win32的原生文件格式 每一个Win32可执行文件都
  • 串口和TCP互相转发工具

    由于项目调试需求 xff0c 代码在远程服务器的虚拟机上 xff0c 在本地计算机通过串口连接需要对接的设备 xff0c 在远程服务器的上位机程序需要和此设备进行对接 xff0c 系统结构如图1所示 图1 系统网络结构图 如何将本地的串口共
  • Linux系统基础操作管理

    一 系统基础操作规范 1 第一个规范 输出命令信息需要在命令提示符之后输入 命令提示符 xff1a span class token punctuation span root 64 oldboy span class token punc

随机推荐

  • 解决Flask跨域问题的几种方式

    本文收录于 Python开发 专栏 xff0c 此专栏聚焦于Python开发中的编程技巧和总结 xff0c 将持续更新 xff0c 欢迎大家订阅 xff01 个人主页 xff1a 有梦想的程序星空个人介绍 xff1a 小编是人工智能领域硕士
  • STL四种智能指针浅析

    我们知道 xff0c 在C 43 43 中没有像Java那样的自动回收垃圾机制 xff0c xff0c 系统只会清理栈上由系统管理的资源 xff0c 在类中若有对堆资源的申请 xff0c 不进行手动释放资源就会导致内存泄漏问题 xff0c
  • C++摸板类 声明对象编译不过 类声明和实现都要放在头文件里

    通常情况下 xff0c 你会在 h文件中声明函数和类 xff0c 而将它们的定义放置在一个单独的 cpp文件中 但是在使用模板时 xff0c 这种习惯性做法将变得不再有用 xff0c 因为当实例化一个模板时 xff0c 编译器必须看到模板确
  • 什么是大端序和小端序,为什么要有字节序

    什么是字节序 字节序 xff0c 又称端序或尾序 xff08 英语中用单词 xff1a Endianness 表示 xff09 xff0c 在计算机领域中 xff0c 指电脑内存中或在数字通信链路中 xff0c 占用多个字节的数据的字节排列
  • opencv4.3.0+Visual Studio 2019环境配置

    1 1 解压opencv并添加环境变量 下载opencv4 3 0 xff0c 进行安装 其实是解压 xff0c 之后配置环境变量 xff0c 我的电脑 gt 属性 gt 高级系统设置 gt 环境变量 xff0c 找到Path变量 xff0
  • 动画图解:十大经典排序算法动画与解析,看我就够了!(配代码完全版)

    排序算法是 数据结构与算法 中最基本的算法之一 排序算法可以分为内部排序和外部排序 内部排序是数据记录在内存中进行排序 而外部排序是因排序的数据很大 xff0c 一次不能容纳全部的排序记录 xff0c 在排序过程中需要访问外存 常见的内部排
  • 什么是 P = NP 问题?

    点击关注上方 五分钟学算法 xff0c 设为 置顶或星标 xff0c 第一时间送达干货 转自后端技术指南针 1 前言 今天和大家一起了解个高能知识点 xff1a P 61 NP问题 看到这里我们可能是一头雾水 xff0c 不由得发问 xff
  • 问题集合 ---- linux 静态库和动态库

    本文转自多网址 xff0c 对作者表示感谢 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 图解:什么是二叉排序树?

    点击关注上方 五分钟学算法 xff0c 设为 置顶或星标 xff0c 第一时间送达干货 转自景禹 景禹的写作风格还是一如既往的细腻 xff1a xff09 xff0c 欢迎关注他 以下为原文 今天我们谈一谈 二叉排序树 xff0c 一种你会
  • B 站疯传,堪称最强,10 大免费的白嫖网站

    点击上方 五分钟学算法 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 来源 xff1a Python知识圈 如果你喜欢在 B 站学习的话 xff0c 可以经常看到一些介绍网站类的视频 xff0c 这些视频有不俗的播放量
  • 还敢搞黄色?4 个色情网站被一锅端,9 名福利姬被刑拘!

    点击上方 五分钟学算法 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 来源 xff1a 扩展迷EXTFANS 9月4日 xff0c 据 64 江苏网警 通报 xff1a 今年3月份以来 xff0c 浙江丽水莲都警方根据
  • 为什么有人劝别选计算机专业?

    大家好 xff0c 我是程序员吴师兄 xff0c 一个坚持在 CSDN 日更原创的程序员 今天想和大家聊一聊为什么有人劝别选计算机专业 和大家说一句掏心窝的话 xff1a 直到 2021 年 xff0c 计算机专业依旧是寒门改变命运的一个最
  • 看完谷歌大佬的 LeetCode 刷题笔记,我马上去字节跳动面试!

    如果你刷 LeetCode 觉得吃力 那么一定需要这份谷歌大佬的 LeetCode 刷题笔记 微信搜索 五分钟学算法 xff0c 公众号回复 04 即可获取对应的下载链接 xff0c 以下是详细介绍 在这里推荐一个谷歌大佬的刷题笔记 每一道
  • 剑指 Offer 09. 用两个栈实现队列(视频讲解)

    一 题目描述 用两个栈实现一个队列 队列的声明如下 xff0c 请实现它的两个函数 appendTail 和 deleteHead xff0c 分别完成在队列尾部插入整数和在队列头部删除整数的功能 若队列中没有元素 xff0c delete
  • 刷到 LeetCode 这个评论,被笑到了

    大家好 xff0c 我是吴师兄 今天早上我在 LeetCode 第 141 号问题 环形链表 的评论区中发现了一个称得上是天秀的解法 xff0c 简直太骚气了 xff0c 忍不住分享给大家 首先给没有见过这道题目的小伙伴补充一下前置知识 x
  • Android JNI基础篇(一)

    Android JNI 基础篇 前言 JNI学习其实并不难 xff0c 在这里 xff0c 我将引导大家学习JNI的基础知识 xff0c 认真学完本教程 xff0c 你将更加坚信我说的话 来吧 xff0c 我们一起学习 xff01 JNI
  • ROS学习(三):消息通信过程

    主节点管理节点信息 xff0c 每个节点根据需要与其他节点进行连接和消息通信 在这里 xff0c 我们来看看最重要的主节点 节点 话题 服务和动作信息的过程 一 运行主节点 节点之间的消息通信当中 xff0c 管理连接信息的主节点是为使用R
  • HTTP Digest authentication(摘要认证)和HTTP basic Authorization(普通认证)用户登出注销的方法

    最近项目中需要对普通认证HTTP basic Authorization和摘要认证HTTP Digest authenticatio登录进行注销 搜索到有几篇文章号称ie xff0c Firefox chrome都可以可以注销 xff0c
  • POCO C++库学习和分析 -- 序

    POCO C 43 43 库学习和分析 序 1 POCO库概述 xff1a POCO是一个C 43 43 的开源库集 同一般的C 43 43 库相比 xff0c POCO的特点是提供了整一个应用框架 如果要做C 43 43 程序应用框架的快
  • 【ubuntu18+QT12+OpenCV4环境配置】

    ubuntu18 43 QT12 43 OpenCV4环境配置 前些天编译了最新版本opencv4 xff0c 但是电脑内还有个opencv3 2 xff0c 有时候二者共享链接库文件即libopencv so XX xff0c 之类的路径