易車庫EasyPR

一、介紹

易車庫EasyPR是一個基於開源庫的車牌識別系統,由中國科學院自動化研究所-AI車聯網創新中心研發,最早於2013年發布第一個版本。EasyPR具有以下特點:

  • 支持中國大陸、香港、澳門、台灣等多個地區的車牌識別
  • 識別率高,準確率達到90%,能夠處理極端場景(如雨天、夜晚、刻意遮擋等)下的車牌識別問題
  • 易於擴展,支持用戶自定義識別模型的訓練和部署
  • 易於使用,提供C++、Python、Java三種語言的接口

二、安裝

1. 環境要求

EasyPR支持Windows、Linux、macOS等操作系統,需要安裝如下幾個必需的庫:

  • OpenCV 3.0以上(必須)
  • Tesseract OCR引擎(可選)
  • Caffe深度學習框架(可選)

2. 安裝命令

以Ubuntu 18.04為例進行安裝,其他操作系統請根據官網提供的指南進行安裝。

sudo apt-get -y update
sudo apt-get -y install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get -y install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev 
sudo apt-get -y install libopencv-dev python3-opencv

git clone https://github.com/liuruoze/EasyPR.git
cd EasyPR/
mkdir build && cd build/
cmake ..
make -j8
sudo make install

三、使用

1. C++接口

#include <iostream>
#include <easypr.h>

using namespace easypr;

int main(int argc, char *argv[]) {
    std::string imgPath = argv[1];
    cv::Mat src = cv::imread(imgPath);

    CPlateRecognize pr;
    pr.setResultShow(false);
    pr.setDetectType(PR_DETECT_CMSER);
    std::vector<CPlate> plateVec;
    pr.plateRecognize(src, plateVec);

    for (auto plate : plateVec) {
        std::cout << "plate str: " << plate.getPlateStr() << std::endl;
        std::cout << "plate color: " << getPlateColorStr(plate.getPlateColor()) << std::endl;
        std::cout << "confidence: " << plate.getConfidence() << std::endl << std::endl;
    }
    return 0;
}

2. Python接口

import cv2
from libeasypr import easypr

img_path = input("Enter image path: ")
src = cv2.imread(img_path)

pr = easypr.PlateRecognizer()
pr.setResultShow(False)
pr.setDetectType(easypr.PR_DETECT_CMSER)
plateVec = pr.plateRecognize(src)

for plate in plateVec:
    print("plate str: {}".format(plate.getPlateStr()))
    print("plate color: {}".format(easypr.getPlateColorStr(plate.getPlateColor())))
    print("confidence: {}".format(plate.getConfidence()))
    print()

3. Java接口

import java.util.List;
import java.util.Scanner;
import cn.liwh.easycar.easypr.EasyPR;

public class PlateRecognizerDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter image path: ");
        String imgPath = sc.nextLine();

        EasyPR pr = EasyPR.create("./lib/libjniEasyPR.so");

        List<String> plateVec = pr.plateRecognize(imgPath);

        for (String plate : plateVec) {
            System.out.println("plate str: " + plate);
        }
    }
}

四、訓練自定義模型

默認的EasyPR模型在較為極端的場景下可能會出現識別錯誤的情況,但是,EasyPR提供了用戶自行訓練並部署模型的功能,從而讓我們可以在特定的場景下提高識別率。

EasyPR提供了如下幾個命令來完成自定義模型的訓練:

  • prepare_dataset.py:用於生成訓練數據集
  • train_ann.py:用於訓練神經網絡模型,並存儲模型權重
  • gen_anni.py:用於將神經網絡模型轉換為C++代碼,並存儲在/easypr/core/dnn/include/anni_gen.h中

這裡就不展開詳細說明如何使用這些命令訓練模型,讀者可以參考EasyPR官方文檔中的相關內容。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/186634.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 05:47
下一篇 2024-11-27 05:47

相關推薦

  • 車庫入口畫法,車庫入口彩繪

    本文目錄一覽: 1、停車位的規定畫法 2、地下車庫出入口在CAD平面圖上怎麼表現?急求!! 是畫一個方框還是就標註下就完了?? 3、cad地下車庫入口坡道畫法 4、停車場怎麼畫 停…

    編程 2024-10-04

發表回復

登錄後才能評論