APP下载

基于ARM 和QT 联合OpenCV 的快速图像处理应用

2023-10-18黄鹏飞

科学技术创新 2023年24期
关键词:开发板触摸屏图像处理

杨 睿,黄鹏飞

(西京学院机械工程学院,陕西西安)

引言

随着科技的发展和嵌入式设备的广泛应用,图像处理在嵌入式系统中扮演着越来越重要的角色。在这些嵌入式系统中,高速、高效的图像处理能力对于实时应用和用户体验至关重要。ARM 架构作为一种低功耗、高性能且可定制的处理器架构,以其在嵌入式领域的广泛应用而闻名。OpenCV 作为一个强大的开源计算机视觉库,提供了丰富的图像处理函数和算法,广泛用于计算机视觉和机器学习领域。通过结合ARM和OpenCV,我们可以实现快速且高效的图像处理应用。ARM的并行计算能力和OpenCV 库的优化功能相互补充,为嵌入式设备提供了强大的图像处理能力。此外,QT 作为一个流行的图形用户界面开发框架,为我们提供了方便而强大的界面设计工具,使得用户能够直观地操作和观察图像处理效果。本文将重点探讨基于ARM 和QT 联合OpenCV 的快速图像处理。我们将研究如何利用ARM处理器的优势,结合OpenCV 提供的图像处理算法和函数,实现快速而准确的图像分析、特征提取和图像增强等功能。我们还将介绍如何利用QT 开发界面,实现用户友好的图像处理应用程序,使用户能够方便地调整参数、实时显示处理结果,并将这些功能应用于实际的图像处理应用中。通过本文的研究和实践,我们期望能够进一步提高嵌入式系统中图像处理的效率和性能,为用户提供更好的图像处理体验。同时,探索出更多基于ARM和OpenCV 的创新应用,拓宽图像处理在嵌入式系统中的应用领域。

1 系统概述

本系统的主要硬件为搭载Linux 系统的ARM 开发板和高清触摸屏,上位机开发使用QtCreate,使用OpenCV作为图像处理库。开发平台为ubuntu18.04,由于硬件是ARM架构,默认为X86 的编译器,因此在实际开发过程需要交叉编译,首先需要安装交叉编译工具链以便后续的开发工作[1],本项目采用的版本为:gcclinaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf。

系统搭建架构如图1 所示。

图1 系统架构

屏幕系统:为确保高清触摸屏的正常使用,需要交叉编译Tslib(Tslib 是一个用于嵌入式Linux 系统上的触摸屏输入设备驱动库。它提供了一系列的API 函数,用于处理触摸屏输入事件,包括触摸点的坐标、压力等信息),Tslib 的主要代码和系统框架如表1 和图2 所示。

表1 Tslib 主要代码

图2 Tslib 框架

Tslib 框架图解(图2 左):上面的模块递归调用下面的模块获得数据,并处理数据,ts_read 使用模块中的read 函数;ts_read_mt 使用模块中的read_mt 函数。

1.优先打开环境变量TSLIB_TSDEVICE 指定的设备。

2.如果没有这个环境变量,尝试打开:

3.如果失败扫描"/dev/input"下的设备节点。

4.成功后得到一个tsdev 的结构体。

Tslib 框架图解(图2 右):

1.优先打开环境变量TSLIB_TSDEVICE 指定的配置文件。

2.如果没有这个环境变量,尝试打开:/etc/ts.conf。

3.根据配置文件读入各类"module"

4./etc/ts.config 示例:

5.成功后,tsdev 结构体list 链表执行各个module。

根据以上代码和框架对Tslib 进行交叉编译和触摸屏测试,挂载NFS(Network File System 是一种在网络上共享文件系统的协议。它允许一台计算机通过网络访问其他计算机上的文件,就像访问本地文件一样),把交叉编译生成的lib,bin,etc 文件通过网络文件系统分别拷贝到ARM开发板的lib/,bin/,etc/目录下,然后在单板上执行测试程序ts_test_mt。

2 项目准备

2.1 搭建OpenCV 3.4.1 的编译环境

进入新建立的build 目录(cd build)里执行指令cmake-gui,开始配置OpenCV 的环境。进入图形化工具cmake-gui[2]:

1.指定源码的所在路径和构建目录,修改成个人的路径;

2.指定交叉编译器的路径;

3.指定安装路径;

如图3 所示。

图3 图形化工具cmake-gui

完成配置后make 编译源码,make install 安装在所创建的install 目录,至此完成OpenCV 的编译。将当前目录下的lib 文件夹下的内容拷贝到文件系统/usr/lib 下即可。

2.2 QT 上位机界面定制

界面以QT 提供的mainwindow 为框架,C++语言进行编辑以及进行OpenCV库函数的调用[3],主要实现图像处理功能按钮名称,以各功能函数名如表2 所示。

表2 按钮名称以及函数名

完成的mainwindow界面如图4 所示。

图4 完成的mainwindow 界面

2.3 在Qt 项目中加入OpenCV

打开Qt 项目的pro 文件,在里面添加如下内容。

修改.pro 文件如图5 所示。

图5 修改.pro 文件

3 项目实现

拷贝install/lib 文件夹下的OpenCV相关库拷贝到开发板的/lib 目录下[4]。在串口终端里直接执行QOpenCV Qt 应用程序(./QOpenCV)。可观察到显示屏上已经出现QT 程序的示例。以跑车图片为例,点击边缘检测,可以看到案例图片已经被线条勾勒了。此外还有灰度化、阈值化、腐蚀、模糊、锐化等。如图6 所示,图片处理速度迅速,功能使用方便,可定制性强。

图6 图片处理结果

结束语

此例程通过将OpenCV 和QT 移植到ARM架构的开发板,在设备上进行无依赖远程服务器或云端计算的情况下进行实时的图像处理任务。这在许多场景下都具有重要意义。ARM架构的高性能和低功耗特性使得在开发板上运行OpenCV 的图像处理算法更加高效和节能。这意味着可以更加容易实现图像分析、物体检测、特征提取和图像识别等应用,并且利用其可移植性和方便定制的特性,可以为用户带来更好的体验和功能。然而,移植OpenCV 到ARM开发板也会带来诸多问题,包括适配和编译的复杂性、资源限制和性能优化等。在进行移植过程中,需要仔细配置编译环境、处理依赖项和测试功能,以确保OpenCV 在ARM架构上正常运行[5]。随着ARM架构和OpenCV 的不断发展嵌入式系统和计算机视觉技术的不断进步,智能化的应用和设备将会不断为用户带来更多便捷的体验。

猜你喜欢

开发板触摸屏图像处理
PLC和触摸屏在卫生间控制系统的应用
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
皮肤“长”出触摸屏
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
基于图像处理的定位器坡度计算
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
投射式多点触控电容触摸屏