0%

使用paddleocr完成车牌识别任务

使用paddleocr完成车牌识别任务

一、Windows环境

  1. 使用conda创建一个虚拟环境并激活

    注:默认大家已经安装过了anaconda或miniconda

    1
    2
    conda create --name paddle python=3.8 -y
    conda activate paddle
  1. 安装必要的库:

    这里一定要注意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
    3
    conda install paddlepaddle==2.5.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
    # 用pip的话清华源、中科大源、百度源都没有(😭),所以就用conda了
    pip install paddleocr==2.7.0
  2. 编写代码执行ocr任务

    (具体代码就不在此展示了,官方文档中有样例参考)

二、Linux环境

1. 安装miniconda

  1. 获取安装脚本
    首先,通过终端下载Miniconda安装脚本。建议使用国内镜像以加快下载速度,例如清华镜像。

    1
    wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
  2. 运行安装脚本
    下载完成后,执行下面的命令开始安装。安装过程中会提示你查看许可证协议,一直按回车键直到出现询问是否同意的提示,输入 yes 即可。

    1
    bash Miniconda3-latest-Linux-x86_64.sh

    注意:安装过程中会询问是否初始化Conda,推荐输入 yes ,这样安装程序会自动配置好环境变量。如果选择no,则需要手动添加环境变量。

  3. 激活配置
    安装完成后,初始化配置使其立刻生效。

    1
    source ~/.bashrc
  4. 验证安装
    激活后,可以通过以下命令检查Miniconda是否成功安装。

    1
    conda --version

    如果终端显示了版本号(如 conda 24.1.2),说明安装成功。

2. 创建虚拟环境和安装对应库

  • 这一步和windows系统中基本一致

    1
    2
    3
    4
    5
    6
    7
    8
    9
    conda 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进行处理。

  1. 创建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的代码
  2. 如何在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   
  3. 运行程序

    写好代码,然后编译和source完成后,我们就可以在roscore里面运行了。

    1
    2
    3
    4
    # 第一个终端
    roscore
    # 第二个终端
    rosrun plate_recognize car_ocr.py