基于树莓派4B的车牌号识别

news2024/11/26 11:38:50

目录

  • 0. 前言
  • 1. Raspbian系统烧录
  • 2. 更换清华源
    • 1. 查看树莓派系统版本
    • 2. 更换清华国内源
    • 3. Raspi镜像修改
    • 4. 系统源更新
    • 5. 错误排查
  • 3. opencv安装
  • 4. 安装 hyperlpr
    • pip安装
    • 编译安装
  • 5. 验证项目可行性

0. 前言

基于树莓派4B的车牌号识别系统

操作系统:Raspbian
PC:树莓派4B

1. Raspbian系统烧录

Raspbian 官方提供了一个 SD 卡烧录软件,名为 Raspberry Pi Imager,可以在 Windows、macOS、Ubuntu 和 Raspberry Pi OS 上运行。下面是 Raspberry Pi Imager 的使用过程:

  • 下载并安装 Raspberry Pi Imager:可以从官方网站 https://www.raspberrypi.org/software/ 下载 Raspberry Pi Imager。然后运行安装程序,按照提示进行安装。

  • 下载 Raspbian 镜像:从官方网站 https://www.raspberrypi.org/downloads/raspbian/ 下载最新版本的 Raspbian 镜像。你需要下载一个 .zip 格式的压缩文件。

  • 插入 SD 卡:将 SD 卡插入电脑的读卡器中,并确保电脑能够读取 SD 卡。

  • 运行 Raspberry Pi Imager:运行 Raspberry Pi Imager,并从菜单中选择你下载的 Raspbian 镜像(.zip 文件)。然后选择你所插入的 SD 卡。

  • 烧录 Raspbian:点击 Write 按钮,开始烧录 Raspbian 镜像到 SD 卡中。烧录过程需要一些时间,取决于你的电脑性能和 SD 卡的速度。

  • 完成烧录:烧录完成后,Raspberry Pi Imager 会弹出一个对话框。你可以选择继续烧录另一个 SD 卡,或者退出 Raspberry Pi Imager。

  • 现在你已经成功地烧录了 Raspbian 镜像到 SD 卡中。将 SD 卡插入树莓派并启动,你就可以开始使用 Raspbian 系统了。

推荐烧录32位最新系统:
在这里插入图片描述

在这里插入图片描述

开启ssh服务和设置初始用户名:
在这里插入图片描述

设置默认WiFi:
在这里插入图片描述
完成后插上读卡器开始烧录

2. 更换清华源

部署大型项目都需要下载很大的文件以及需要下载许多相关的依赖项目,所以需要更换国内源以提升下载速度:

1. 查看树莓派系统版本

输入这条命令来查看树莓派的系统版本

lsb_release -a

如果是11,则继续下一步操作

2. 更换清华国内源

树莓派的操作系统是基于Debian系统,而Debian的镜像存储在/etc/apt/sources.list中,这里我们将官方镜像注释掉,添加上清华源

  1. 用vim命令编辑 /etc/apt/sources.list 文件

    sudo vim /etc/apt/sources.list
    
  2. 将原文件所有内容都替换,使用以下内容替换

    deb [arch=armhf] http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi 
    deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi
    

3. Raspi镜像修改

  1. 用vim命令编辑/etc/apt/sources.list.d/raspi.list文件

    sudo vim /etc/apt/sources.list.d/raspi.list
    
  2. 注释源文件的内容,用以下内容来替换

    deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main 
    

4. 系统源更新

  1. 更新软件索引清单

    sudo apt-get update
    
  2. 比较索引清单更新依赖关系

    sudo apt-get upgrade 
    

5. 错误排查

更换清华源后下载发生了报错,这是由于没有添加公钥导致的

执行下列语句来添加公钥,注意公钥要更换成报错中的那一串字符

gpg --keyserver  keyserver.ubuntu.com --recv-keys 9165938D90FDDD2E
gpg --export --armor 9165938D90FDDD2E | sudo apt-key add -

3. opencv安装

直接在终端中输入以下命令用于下载opencv的依赖

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libhdf5-dev libhdf5-serial-dev
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev

依赖安装完毕后安装opencv:

sudo pip3 install opencv-python==3.4.6.27

安装完毕后验证opencv安装情况:
终端输入sudo python3,然后import cv2查看是否能正确导入。

如果报错,大概率是numpy与opencv版本版本不匹配导致。

Python交互式 shell 输入:
import numpy as np
print(np.version)

如果版本号不是1.14.5,卸载numpy重新安装:
卸载

pip uninstall numpy

重新安装

pip install numpy==1.15.1

此时回到验证opencv情况,如果依旧错误,尝试卸载opencv重新安装或者评论区留言你遇到的问题。

4. 安装 hyperlpr

更换pip国内源

打开终端,使用以下命令备份原有的 pip 配置文件:

sudo cp /etc/pip.conf /etc/pip.conf.backup

使用以下命令创建一个新的 pip 配置文件:

sudo vim /etc/pip.conf

将以下代码复制到文件中:

[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
trusted-host = pypi.tuna.tsinghua.edu.cn

保存并关闭文件。

使用以下命令测试新源是否正常:

pip search numpy

验证 pip 配置文件是否修改成功:

cat /etc/pip.conf

pip安装

现在开始下载hyperlpr

python3 -m pip install hyperlpr

编译安装

你也可以选择编译源码安装的方式:
安装必要的依赖项:

sudo apt-get update
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

从 Github 上克隆 Hyperlpr 代码:

git clone https://github.com/liuruoze/EasyPR.git

通过 cd 命令进入 Hyperlpr 的源代码目录:

cd EasyPR

进入 Hyperlpr 源代码目录后,使用以下命令编译 Hyperlpr:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

这段编译完成后,将在 build 目录下生成一个可执行文件 HyperLPR。

这样就可以使用 Hyperlpr 了。如果您需要将 Hyperlpr 安装到系统中以便在任何地方使用,可以使用以下命令安装:

sudo make install

使用编译安装的方式需要非常长的时间,因为涵盖了大量数据。本人安装时编译花费了一个小时,建议还是直接使用pip安装。

5. 验证项目可行性

创建你的工程目录:

需要有一张含有车牌号的图片。

写入以下文件
test.py

from hyperlpr import *
import cv2

image = cv2.imread("test.jpg")
# 打印识别结果
print(HyperLPR_plate_recognition(image))

这是我在江西萍乡旅游时拍下的一张奥迪A4L的照片(此处奥迪应该打钱),现在它刚好就派上用场了。
在这里插入图片描述
在这里插入图片描述
打印出来的参数是:
[“车牌号”,“准确率”,[“位置列表”]]
其中位置列表分别为左、上、右、下的坐标。

事实上,它是能够同时检测到多个车牌号的,但是受限于没有拍停车场的习惯所以找不出合适的图片信息,所以就到这咯!

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

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

相关文章

QT实例2(QTableWidget表格中增删数据)

案例介绍 本案例仅简单介绍QTableWidget部分使用方法,如在表格中插入或删除一行数据以及清空表格数据等。在添加数据时,设置了条件判断如正则表达式,若用户输入的数据不合法,则添加失败并提示用户错误的地方,便于用户…

IPsec的NAT穿越详解

问题场景 左边的支部,它的防火墙上联路由器,由于防火墙内部的接口使用的是私网地址,这就导致其无无法在公网上与对端防火墙进行IPsec的隧道建立 。所以必须在AR5上面不是NAT地址转换,由于一般使用的是NAPT,isakmp协议因…

ChatGPT评测

总结:ChatGPT很强大,用作学术方面的问答或者软件行业的辅助工具是有一定的作用,但是有些回答设置了限制,并且中文回答方面总是回答一半,需要一直让他继续说,篇幅不是很长,但是往往能说道精髓&am…

最新加装ChatGPT的New Bing申请流程(含出错解决办法)

两天获得New Bing测试资格流程记录 前言一、Microsoft Edge Dev浏览器下载二、Microsoft账号注册与登陆三、浏览器插件下载与添加四、加入候补名单五、写封信给Bing团队 前言 2023.03.08,下午收到了Microsoft Bing公司的邮件,提示测试资格申请成功&…

Qt Xlsx的基本使用

前言 在很多时候 ,我们需要将数据导出,之前我是将数据表导出为CSV格式,CSV文件虽然可以用Excel打开,但相对于真正的Xlsx文件,还是有许多不足的。偶然之间,发现了QtXlsx这个第三方库。 1、QtXlsx官网对QtX…

makefile工具的使用,编写一个或多个文件!(简单易上手)

一、make 和 makefile 是什么 1. make 是一个 命令。 2. makefile 是一个 文件,可以自动化的构建项目。 3. 编写 makefile 需要: (1)依赖关系 (2)依赖方法 二、什么是依赖关系、什么是依赖方法 下面我简单…

【Java】Java核心要点总结:60

文章目录 1. 乐观锁一定就是好的吗2. Synchronized和ReentrantLock有什么异同3. ReentrantLock是如何实现可重入性的4. 和Synchronized相比,可以重入锁ReentrantLock实现原理有什么不同5. AQS框架 1. 乐观锁一定就是好的吗 乐观锁并不一定好,它有自己的适…

chatgpt赋能python:Python实现将一张图片贴到另一张图片上

Python实现将一张图片贴到另一张图片上 在图像处理中,往往需要将多张图片合成一张图片。这里介绍使用Python实现将一张图片贴到另一张图片上的方法。 准备工作 在实现之前,我们需要安装Python的图像处理库Pillow和numpy。 可以通过pip进行安装&#…

创建一个SpringBoot项目

Spring的诞生是为了简化JAVA程序的开发的 快速开发Spring而诞生的 SpringBoot为了快速开发Spring而诞生的一个框架 1)什么是SpringBoot?为什么要学它?(重要) Spring是包含了众多工具方法的IOC容器 SpringBoot就是Spring框架的脚手架,它的存在就是为了快…

软考A计划-系统架构师-官方考试指定教程-(2/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

chatgpt赋能python:Python屏幕输入介绍:了解命令行输入的基本知识

Python屏幕输入介绍:了解命令行输入的基本知识 Python是一种使用广泛的编程语言,用于编写各种类型的应用程序,包括图形用户界面应用程序和基于命令行的应用程序。对于基于命令行的应用程序来说,屏幕输入非常重要。本文将介绍Pyth…

Object.assign用法

Object.assign用法 Object.assign是什么? 首先了解下Object.assign()是什么。我们先看看ES6官方文档是怎么介绍的? Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。简单来说,就是Obj…

stm32超声波测距代码

操作思路: 初始化时将trig和echo端口都置低,首先向给trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时…

(附源码)python音乐电台推荐系统的设计与实现 毕业设计 301210

音乐电台推荐系统 摘 要 随着人类向信息社会的不断迈进,风起云涌的信息时代正掀起一次新的革命,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的音乐电台推荐系统来管理音乐电台信息&#xff0…

OpenAI 接口文档-(中文版)-(一)

介绍 Introduction 您可以通过来自任何语言的 HTTP 请求、我们的官方 Python 绑定、我们的官方 Node.js 库或社区维护的库与 API 进行交互。 若要安装官方 Python 绑定,请运行以下命令: pip install openai 要安装官方的 Node.js 库,请在 No…

chatgpt赋能python:Python将空格改为换行符

Python将空格改为换行符 在Python编程中,经常需要对字符串进行处理,其中包括将空格替换为换行符。这篇文章将会介绍如何使用Python来实现这个目标,并分享一些关于字符串处理的技巧。 为什么要将空格改为换行符 将空格改为换行符可以让文本…

chatgpt赋能python:Python屏蔽一段代码

Python屏蔽一段代码 在Python编程中,有时我们需要屏蔽一段代码以便于调试或者测试。在很多情况下,我们可能不想删除这段代码,因为需要在将来的某个时间再次使用它。为了解决这个问题,我们可以使用Python中的注释语句或者条件语句…

Vue3中集成Unreal 5.2 像素流(Pixel Streaming插件)

目录 1. 创建一个Unreal项目2. 启用Pixel Streaming插件3. 下载Unreal 5.2对应的Pixel Streaming Infrastructure4. 创建一个Vue项目5. 推流方式一:使用Unreal Engine 5.26. 推流方式二:打包项目参考资源: 1. 创建一个Unreal项目 默认大家都…

机器人的免费使用方法

目录 一、机器人是什么? 二、机器人免费使用的方法: 第一点:电脑端 第二点:手机端 三、结语: 一、机器人是什么? 博主理解:方便生活,比Siri更加高级,能够智能的对我们…

chatgpt赋能python:Python就业前景分析

Python就业前景分析 Python已成为全球最流行的编程语言之一,因其易学、易用、高效、可扩展性强等特点,Python在各个领域都发挥着重要作用。Python的发展和应用迅猛,拥有Python编程经验的工程师在各个领域都面临着广泛的就业机会。 Python的…