使用paddleocr完成车牌识别任务
一、Windows环境
使用conda创建一个虚拟环境并激活
注:默认大家已经安装过了anaconda或miniconda
1
2conda create --name paddle python=3.8 -y
conda activate paddle
安装必要的库:
这里一定要注意paddlepaddle的版本和paddleocr的版本!
如果要使用paddleocr 3.0+版本,paddlepaddle的版本也需要 > 3.0
为了能够在ubuntu 20.04和ros1中正常运行,我选择较为稳定的版本
通过N多次试验,发现paddlepaddle 2.5.2 和 paddleocr 2.7.0 不会发生冲突(python是3.8)
安装:
1
2
3conda install paddlepaddle==2.5.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
# 用pip的话清华源、中科大源、百度源都没有(😭),所以就用conda了
pip install paddleocr==2.7.0编写代码执行ocr任务
(具体代码就不在此展示了,官方文档中有样例参考)
二、Linux环境
1. 安装miniconda
获取安装脚本
首先,通过终端下载Miniconda安装脚本。建议使用国内镜像以加快下载速度,例如清华镜像。1
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
运行安装脚本
下载完成后,执行下面的命令开始安装。安装过程中会提示你查看许可证协议,一直按回车键直到出现询问是否同意的提示,输入yes即可。1
bash Miniconda3-latest-Linux-x86_64.sh
注意:安装过程中会询问是否初始化Conda,推荐输入
yes,这样安装程序会自动配置好环境变量。如果选择no,则需要手动添加环境变量。激活配置
安装完成后,初始化配置使其立刻生效。1
source ~/.bashrc
验证安装
激活后,可以通过以下命令检查Miniconda是否成功安装。1
conda --version
如果终端显示了版本号(如
conda 24.1.2),说明安装成功。
2. 创建虚拟环境和安装对应库
这一步和windows系统中基本一致
1
2
3
4
5
6
7
8
9conda create -n paddle python=3.8 # 中间全部accept就行
conda activate paddle
# 推荐清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 下面是安装paddle
conda install paddlepaddle==2.5.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
pip install paddleocr==2.7.0
3. ROS1与PaddleOCR集成
将PaddleOCR嵌入到ROS节点中是关键一步。您需要创建一个ROS功能包,并编写节点来订阅图像话题,然后调用PaddleOCR进行处理。
创建ROS工作空间和功能包
这些都是常规的前置操作,确保位置正确即可
1
2
3
4
5
6
7
8
9
10
11
12
13# 创建工作空间
mkdir -p ~/zhsq_ws/src
cd ~/zhsq_ws/src
catkin_make
# 创功能包(在工作空间src目录下)
catkin_create_pkg plate_recognize rospy std_msgs sensor_msgs cv_bridge
cd ~/zhsq_ws
source ./devel/setup.bash
# 在功能包下
mkdir scripts
# 然后在/scripts下写ocr的代码如何在ros中调用虚拟环境
在ros的基础教程中,你会学到:写完py代码后需要在cmakelist里面把下面这四行注释去掉
1
2
3
4# catkin_install_python(PROGRAMS
# scripts/my_python_script
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )但是!如果希望自己写的shebang行能够正常生效,那么Cmakelists中的catkin_install_python要保持注释
如果你在shebang行指定了编译器的同时,还将这个catkin_install_python取消注释,那么catkin_build后这一行catkin_install_python指令便会将你写的shebang行覆盖掉,并调用ROS默认的python编译器。
详细解释:shebang is ignored by rosrun - Robotics Stack Exchange
这样,你就可以在你的代码第一行(shebang行)标注虚拟环境中解释器的位置,让你的程序在对应的虚拟环境中运行。shebang行例如:
1
#! /home/ros1/miniconda3/envs/paddle/bin/python
运行程序
写好代码,然后编译和source完成后,我们就可以在roscore里面运行了。
1
2
3
4# 第一个终端
roscore
# 第二个终端
rosrun plate_recognize car_ocr.py