linux系统中使用QT实现摄像头功能的方法

news/2024/10/30 15:20:12/

      大家好,今天主要和大家聊一聊,如何使用QT中的Camera的功能和实现。

 

目录

第一:摄像头资源简介

第二:环境搭建要求

第三:代码编译实现要求


第一:摄像头资源简介

       开发板上有一路“CSI”摄像头接口,支持OV5640、OV2640 和 OV7725(不带 FIFO)。同时有USB 接口,可以接 USB 免驱摄像头。例程兼容 USB摄像头与正点原子的 OV5640OV2640 OV7725 摄像头。出厂系统请更新到最新的出厂系统,在驱动层正点原子对 OV5640、OV2640 和 OV7725 摄像头维护、优化或者添加支持。

第二:环境搭建要求

       要想在 Ubuntu 上使用 OpenCV,那么我们的 Ubuntu 上必须有 OpenCV 的库,如果您不想 在 Ubuntu 安装 OpenCV,就可以跳过这小节,直接用出厂系统提供的交叉编译工具链,里面已 经提供有 OpenCV。在 Ubuntu 上安装 OpenCV 只是方便我们测试界面,编写的程序也可以在 Ubuntu 上运行。安装的步骤也比较简单。

        可以直接在官网下载对应的OpenCV,进入 OpenCV 的官网 https://opencv.org/releases。下载 3.4.1 版本的 OpenCV。

    

         如下图已经下载好文件,并拷贝下载好的文件到 Ubuntu 的家目录下。

       

执行下面的指令进行解压。解压将会得到一个 opencv-3.4.1 文件夹,我们使用 cd 指令进入此文件夹。

tar xf opencv-3.4.1.tar.gz
cd opencv-3.4.1

        安装cmake,用于生成编译OpenCV所需要的文件。

sudo apt-get install cmake

         新建一个 build 目录,并进入,用于编译生成的文件。

mkdir build
cd build

         执行 cmake 配置编译。注意下面的指令“..”不要漏了!这里表示上一层目录。cmake 会从上一层目录下找配置项,并配置到当前目录。

cmake ..

        在配置的过程中 cmake 会下载一些库,ippicv_2017u3_lnx_intel64_general_20170822.tgz,需要一段时间,请等待,如果不能下载成功请重复尝试。

cmake 配置成功如下图。

       执行 make 开始编译。输入下面的指令。

  make -j 16

// 以实际分配给虚拟机的核心数为准,最佳为分配给虚拟
机核心数据的 2 倍。笔者的虚拟机最大分配了 16 个核心,笔者个人的电脑并不快,就是核心多,
所以编译就快。编译完成耗时约 5 分钟。不要只输入 make,否则将编译很久!需要加参数 -j n
n 请根据个人虚拟机的实际情况。

 执行下面的指令安装,安装到系统目录,需要加 sudo 权限。

sudo make install

 安装完成如下。可以看到库被安装到/usr/local/lib 下,头文件被安装在/usr/local/include 下。

      我们只需要知道安装的库路径和头文件路径即可在 Qt 里调用 Ubuntu 安装的 OpenCV。头文件作用来编写程序,库路径用来运行程序时调用。我们只要在 Qt pro 项目文件里指定这两个路径即可。

第三:代码编译实现要求

      如果我们的 Ubuntu 没有安装 OpenCV 就会使用不了 OpenCV。如果您在 19.2 小节已经安装过 OpenCV,那么下面两个套件都可一起选。本次笔者两个一起选,因为笔者有 USB 摄像 头可以在 Ubutnu 上使用 OpenCV 测试,编写的程序交叉编译后在 I.MX6U 开发板使用 USB 免驱摄像头或者正点原子 OV5640/OV7725(不带 FIFO )/OV2640 测试成功!

 

总结:利用QT实现摄像头的功能,可以使用OPENCV的库,调用对应的API库函数,整体实现还是比较麻烦的,环境配置非常重要。


http://www.ppmy.cn/news/12222.html

相关文章

2022.12 青少年机器人技术等级考试理论综合试卷(六级)

2022年12月青少年机器人技术等级考试理论综合试卷(六级) 一、 单选题(共 20 题, 共 80 分) 1.TCP/IP 四层模型中, 用于传送应用层数据包的是? ( ) A.应用层 B.传输层 C.网络层 D.网络接口层 标…

parquet

一、parquet结构 Row Group ​ --Column Chunk:一列对应一个Column Chunk ​ – Page:压缩和编码的单元,parquet的 min/max 索引是针对于page的,存在了文件的页脚。以前的版本是存储Column Chunk和Page的索引,导致在…

LeetCode622.设计循环队列

设计循环队列1.题目描述2.思路3.代码实现以及分析3.1 创建结构体3.2创建一个具体的循环队列3.3判断是否为空 和 判断是否为满4. 进队列 和 出队列5.取队首和队尾元素6.释放空间7.总结1.题目描述 设计循环队列 2.思路 环形队列的抽象图 我们这里使用数组模拟实现循环队列&…

TCP/IP网络编程(4)——基于 TCP 的服务端/客户端(1)

文章目录第 4 章 基于 TCP 的服务端/客户端(1)4.1 理解 TCP 和 UDP4.1.1 TCP/IP 协议栈4.1.2 链路层4.1.3 IP 层4.1.4 TCP/UDP 层4.1.5 应用层4.1.6 生活小例子4.2 实现基于 TCP 的服务器/客户端4.2.1 TCP 服务端的默认函数的调用程序4.2.2 进入等待连接…

57 mac 中 SIGINFO 信号, jdk8 支持, 但是 jdk9 不支持?

前言 问题来自于文章 shell脚本 后台启动 程序1 “tail -f log“, ctrl c 导致程序1中断 中的测试用例 Test07Signal2ParentProcess, 可以看到 我当时标记了一个 "todo, not work in hostpostVM9" 然后 问题是这样的, 我同一台机器, 然后 jdk8 带上 SIGINFO 去执行…

时间序列模型SCINet(代码解析)

前言 SCINet模型,精度仅次于NLinear的时间序列模型,在ETTh2数据集上单变量预测结果甚至比NLinear模型还要好。在这里还是建议大家去读一读论文,论文写的很规范,很值得学习,论文地址SCINet模型Github项目地址&#xff…

智能售货机系统帝可得

智能售货机 概述项目使用springcloudalibaba中提供的短信服务图形验证码生成多端登录/网关统一鉴权对象存储服务代码的自动填充微服务集成emq,发送emq工单业务流 接收工单 拒绝工单 运维工单补货工单使用xxl-job进行任务调度lkd集成xxl-job自动创建维修工单自动…

线程池(关于变量捕获、线程数、针对ThreadPoolExecutor的构造方法参数的解释、自实现线程池)

目录:一、前言二、关于变量捕获三、针对ThreadPoolExecutor的构造方法参数的解释四、自实现线程池一、前言相比较于进程,创建线程 / 销毁线程 的开销是相对较小的,但是太过频繁的创建线程 / 销毁线程,其开销也很大。这时候我们就需…