项目设计:基于Qt和百度AI的车牌识别系统(嵌入式ARM)

news2024/12/23 14:25:01

        基于Qt和百度AI智能云实现的智能车牌识别系统,具体可实现为停车场管理系统、智能计费停车系统…等。

1.系统实现思路及框架

1.1实现思路

         要实现一个车牌识别系统,有多种方法,例如用opencv图像算法实现,或用第三方算法接口,选择一种合适的方式。除算法部分外,还需要有用户交互界面即UI,UI界面的实现也有多种方法,也需要多种方法对比选出适合的一种。

         此外,还有很重要的一项,用哪种语言实现,如C/C++,python,java …等。

1.1.1系统功能需求

        要做一个项目,首先要明确系统的功能有哪些,再根据功能思考该如何实现。该项目的功能有如下:

  1. 打开摄像头并能实时显示画面;
  2. 车牌识别,能准确识别出摄像头拍到的车牌号码;
  3. 识别到车牌后,能显示车牌号码,并截下车辆图片;
  4. 若是车库或收费系统,还需要录入/删除车牌,计费等功能。

关于编译语言,多种语言均可实现,这里选择C/C++。

1.1.2界面实现

         UI界面的实现,本系统选择最常用的QT库,本系统的所有UI界面都能实现,包括各种界面显示,如视频显示,文字/图像等,还有用户交互的部分,如按钮,输入框等操作控件。此外,QT库学习入门快、网上资料教程多等也是选择的原因之一。

1.1.3车牌识别实现

车牌识别,不选择算法复杂的opencv,而是选用简单调用接口的百度AI平台。用百度AI平台,具体算法方面不用关心,只需要按照其访问要求来对接即可,即发送的内容要按照百度AI定义的协议要求来组织,具体要查看百度AI官方文档,后续再具体讲解。

1.2系统框架

1.2.1硬件框架

        系统的硬件主要分为两大部分:PC主机和ARM开发板,即需要一块ARM-Linux开发板(带屏幕),一个摄像头,一台PC主机,一根网线(开发板与PC主机连接)。

硬件框架

1.2.2软件框架

系统的软件框架主要分为三大部分:前台(ARM开发板)、后台(PC主机)、百度智能云。

前台(ARM开发板)主要功能是采集图像、信息显示等;后台(PC主机,ubuntu)主要是车牌管理(录入/删除车牌等)、对接百度智能云平台;百度智能云主要是识别车牌信息。

2.系统开发环境搭建

PC主机的运行环境是在windows上运行的虚拟机ubuntu系统。

2.1 Qt开发环境

界面采用QT进行开发,主要安装qt creator即可。

qt creator安装程序是图形化界面的,像在windows上安装软件一样,比较简单,不再累述。

2.2百度AI开发环境

与百度AI的通信方式是https,因此,百度AI相关的环境主要有OpenSSL库、Curl库和Json库的安装。

2.2.1 OpenSSL库安装

下载openssl库:/source/index.html (openssl.org)

实验版本:openssl-1.1.1s.tar.gz

将openssl库源码包放到ubuntu下,解压出来,并进入解压出来的目录。

配置编译选项:主要配置安装路径

$ ./config –prefix=/usr/local/openssl

编译:

$ make

安装:

$ sudo make install

安装完成,可在安装路径下见到openssl

2.2.2 Curl库安装

下载curl源码包:curl-7.88.0.tar.gz

下载地址:curl downloads

亦可用命令下载:

$ wget https://curl.se/download/curl-7.88.0.tar.gz

将源码包放入ubuntu,解压出来,并进入解压出来的目录:

配置编译选项:指定安装在/usr/local/curl目录,指定openssl的路径,

$ ./configure --prefix=/usr/local/curl --with-ssl=/usr/local/openssl

编译

$ make

安装

$ sudo make install

2.2.3 Jsoncpp安装

下载jsoncpp库:jsoncpp-master.tar.gz

open-source-parsers/jsoncpp: A C++ library for interacting with JSON. (github.com)

把源码包放到ubuntu上,解压出来并进入解压出来的目录:

执行amalgamate.py脚本,会在当前目录生成dist目录:

dist目录就是我们需要的源码文件,共有3个文件:

jsoncpp.cpp、json-forwards.h、json.h

将其包含在我们的工程源码一起编译即可使用json接口了。

使用时,只需包含头文件json.h

#include "json/json.h"

3.系统实现步骤

        整个系统的实现,分功能分模块逐个实现,由简入深,先表面再内部,就是说,先做界面和图像采集及显示的,然后调前台和后台之间的通信,最后再实现百度AI算法接口的调用。

3.1 Qt界面

3.1.1 界面显示及而已

界面显示及布局可直接在Qt creator上添加想要的控件及设定其坐标位置即可,十分的直观快捷。

前台界面设计如下:

注:中间大图区域显示摄像头画面,右侧显示识别出来的车牌号信息。

后台界面设计如下:

注:中间大图区域显示摄像头画面或出入记录表格,右侧为识别结果及车牌管理相关功能。

3.1.2 摄像头图像采集及显示

对摄像头的驱动,采用的是linux系统的V4L2框架,这是linux系统内部的,不需要我们来实现,只管调用即可。

V4L2流程:申请若干个buffer,组成一个队列,每个buffer用于存放一帧图像,当摄像头有图像时便会填充到到这些buffer中,要读取数据时实际是取出一个已填充图像的buffer,读完图像又将该buffer塞入队列中。

采集到图像后,将送至屏幕显示以及传输给后台并由后台发送到百度AI平台识别,百度AI再返回识别结果,这样图像的流程就走完了。

图像流程

3.2 前后台通信

前后台通信采用的是socket套接字TCP连接,一切数据交互都是基于TCP连接的,后台为服务器,前台为客户端。

3.3 百度AI调用

3.3.1 创建百度设备

首先要在百度智能云官网上创建自己的账号,然后创建一个人车牌识别的项目/设备,具体操作请自行了解,这里不再展开。

3.3.2 百度AI算法的调用

百度AI算法的调用是基于https协议的,向百度AI服务器使用post发送请求,带上验证信息、图片数据等,百度AI处理post请求并识别图片中的车牌号后,再返回结果。

未完待续...

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

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

相关文章

【每日一题】找到字符串中所有字母异位词

目录 题目:思路:暴力枚举:滑动窗口: 代码实现:一些优化:代码实现: 题目: 找到字符串中所有字母异位词 思路: 暴力枚举: 对于有关子串的题目我们使用暴力枚…

H12-821_113

113.如图所示是路由器现ATE输出的部分信息,以下关于这部分信息的描述,错误的是哪一项? A.display pim rp-info命令用来查看组播组对应的RP信息 B.RP地址是2.2.2.2 C.组地址是225.0.0.0 D.RP的优先级是0 答案:C 注释: …

C语言-柔性数组成员的使用

文章目录 摘要柔性数组成员基本使用细节探究 零长度数组-定长数组-变长数组 摘要 本文先介绍柔性数组成员(flexible array member)的基本使用,然后介绍其内存结构。最后,补充了一些数组相关的其他概念。 柔性数组成员 基本使用 参考: 【C语言内功修炼…

有趣的CSS - 一串乱码

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是通过 css 来实现一段不停变化的 bug 乱码效果。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面…

AMDGPU KFD Test 编译使用

ROCT-Thunk-Interface是一个用于在ROCm软件堆栈中提供设备无关性的层。它是ROCm的一部分,允许不同的硬件平台(如AMD GPU和Intel CPU)使用相同的API进行计算。 要安装ROCT-Thunk-Interface,首先需要创建一个新的目录,并…

开源免费的文件互传工具,LocalSend软件推荐

怎么把手机里的文件传到电脑或电脑的文件传到手机? 在日常生活和工作中,我们经常需要在不同的设备间传输文件,比如照片、视频、文档等。如果你使用是统一的苹果设备Airdrop可以非常方便的共享文件,但是如果你要在不同操作系统的设…

css 鼠标移入放大的效果

效果 HTML <div class"img-wrap"><img class"img-item" src"../assets/1.png" alt"" srcset""></div> CSS <style lang"less" scoped> .img-wrap {/* 超出隐藏 */overflow: hidden;.img-…

开发环境热部署

为什么需要热部署 在实际开发中&#xff0c;经常要修改代码&#xff0c;然后重启服务&#xff0c;再验证代码是否生效。对于开发场景&#xff0c;随着项目的演进&#xff0c;微服务越来越多&#xff0c;等待重启的时间也会越来越多&#xff1b;对于联调场景&#xff0c;对一处…

代码随想录Day66 | 图的DFS与BFS

代码随想录Day66 | 图的DFS与BFS DFS797.所有可能的路径无向图和有向图的处理 BFS200.岛屿数量 DFS 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a; 状态 本质上就是回溯算法。 void dfs(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本节点所连接的…

for循环语句

语法格式&#xff1a; for (表达式1; 表达式2; 表达式3) { 若干语句;//循环体 } 执行规则 STEP1&#xff1a;计算“表达式1” &#xff0c;初始化。 STEP2&#xff1a; 判断“表达式2”的值&#xff0c;若 “表达式2”的值为true&#xff0c;则进行 STEP2&#xff0c;否则进行…

DevStack 基于 Ubuntu 部署 OpenStack

Devstack 简介 DevStack 是一系列可扩展的脚本&#xff0c;用于基于 git master 的最新版本快速调出完整的 OpenStack 环境。devstack 以交互方式用作开发环境和 OpenStack 项目大部分功能测试的基础。 devstack 透过执行 stack.sh 脚本&#xff0c;搭建 openstack 环境&…

ChatGPT最新功能“Text To Speech (TTS,文本转语音)”详细解读!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

32单片机基础:PWM驱动舵机,直流电机

PWM驱动舵机 接线图如上图所示。注意&#xff0c;舵机的5V 线不能接到面包板上的正极&#xff0c;面包板上的正极只有3.3V,是STM32提供的&#xff0c;所以要接到STLINK的5V, 我们如何驱动舵机呢&#xff1f;由之前我们介绍原理知道&#xff0c;要输出如下图对应的PWM波形才行…

【FPGA/IC】CRC电路的Verilog实现

前言 在通信过程中由于存在各种各样的干扰因素&#xff0c;可能会导致发送的信息与接收的信息不一致&#xff0c;比如发送数据为 1010_1010&#xff0c;传输过程中由于某些干扰&#xff0c;导致接收方接收的数据却成了0110_1010。为了保证数据传输的正确性&#xff0c;工程师们…

CentOS配网报错:network is unreachable

常用命令&#xff1a; 打开&#xff1a; cd /etc/sysconfig/network-scripts/ 修改&#xff1a; vim ifcfg-ens33 打开修改&#xff1a; vim /etc/sysconfig/network-scripts/ifcfg-ens33 保存&#xff1a; 方法1&#xff1a;ESCZZ&#xff08;Z要大写&#xff09; 方…

递归实现n的k次方(C语言)

编写一个函数实现n的k次方&#xff0c;使用递归实现。 下面来说一下思路 5的3次方&#xff1a;就是5*(5的3-1次方) 7的4次方&#xff1a;就是7*&#xff08;7的4-1次方&#xff09; 以此类推 n的k次方就是&#xff1a;n* n的&#xff08;k-1&#xff09;次方 int Func(int n,…

C++基于多设计模式下的同步异步日志系统day4

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C基于多设计模式下的同步&异步日志系统 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 只要内容主要实现了同步日志消息…

“智农”-农业物联网可视化

大棚可视化|设施农业可视化|农业元宇宙|农业数字孪生|大棚物联网|大棚数字孪生|农业一体化管控平台|智慧农业可视化|智农|农业物联网可视化|农业物联网数字孪生|智慧农业|大棚三维可视化|智慧大棚可视化|智慧大棚|农业智慧园区|数字农业|数字大棚|农业大脑|智慧牧业数字孪生|智…

072:vue+cesium 实现下雪效果

第072个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中实现下雪效果,这里使用着色器来实现实例特效。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共120行)着色代码实现心得:专栏目标示例效果

2022NOC大赛原创未来赛道小学低年级组图形化真题加解析

这篇文档是一份未来小学低年级组图形化真题加解析,主要面向小学生进行考试。考试内容主要包括图形化思维、数学运算和阅读理解等方面。 图形化思维是近年来数学教育中备受关注的领域,通过将抽象的概念转化为具体的形象,帮助学习者更好地理解和掌握数学知识。因此,在这个考试…