0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于OpenCV開(kāi)源庫(kù)開(kāi)發(fā)的在OpenHarmony中實(shí)現(xiàn)車牌識(shí)別

OpenAtom OpenHarmony ? 來(lái)源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-06-30 11:16 ? 次閱讀

張榮

OpenHarmony 知識(shí)體系工作組

介紹

本車牌識(shí)別項(xiàng)目是基于開(kāi)源項(xiàng)目 EasyPR(Easy to do Plate Recognition)實(shí)現(xiàn)。EasyPR 是一個(gè)開(kāi)源的中文車牌識(shí)別系統(tǒng),基于 OpenCV 開(kāi)源庫(kù)開(kāi)發(fā)。本項(xiàng)目使用潤(rùn)和 HiSpark Taurus AI Camera(Hi3516DV300) 攝像頭開(kāi)發(fā)板套件(以下簡(jiǎn)稱 Hi3516)實(shí)現(xiàn)拍照車牌并顯示識(shí)別結(jié)果。采用的系統(tǒng)是 OpenAtom OpenHarmony (簡(jiǎn)稱“OpenHarmony”) 3.1 Release 小型系統(tǒng)。首先將 Hi3516 中的攝像頭對(duì)準(zhǔn)車牌,其距離約為 60cm~70cm 如下所示:

5a7ade88-f3be-11ec-ba43-dac502259ad0.png

運(yùn)行程序后按下 1 拍照、按 2 輸出識(shí)別結(jié)果如下所示:

5a9fb172-f3be-11ec-ba43-dac502259ad0.png

開(kāi)發(fā)流程

本車牌識(shí)別項(xiàng)目使用 OpenHarmony 中的媒體子系統(tǒng)實(shí)現(xiàn)。代碼基于停車場(chǎng)景下的本地車牌識(shí)別。進(jìn)行講解,其代碼結(jié)構(gòu)如下:

三方庫(kù)移植

EasyPR 實(shí)現(xiàn)是基于 OpenCV 實(shí)現(xiàn),因此實(shí)現(xiàn) EasyPR 首先得移植 OpenCV。移植的方式采用 Gn 調(diào)用 Shell 腳本,Shell 腳本調(diào)用 Makefile 實(shí)現(xiàn)。
├── BUILD.gn├── include │   ├── camera.h                                       // 攝像頭定義│   ├── local_net_communication.h          // 設(shè)備協(xié)同主要功能定義│   ├── local_net_def.h                             // 設(shè)備協(xié)同打印日志│   ├── local_net_dlist.h                            // 設(shè)備協(xié)同設(shè)備列表定義│   ├── local_net_message.h                    // 設(shè)備協(xié)同傳輸消息定義│   ├── local_net_udp.h                             // 設(shè)備協(xié)同udp協(xié)議定義│   ├── local_net_utils.h                            // 設(shè)備協(xié)同通用工具定義│   ├── log.h                                              // 打印日志定義│   └── wpa_work.h                                   // wifi設(shè)置定義└── src    ├── base64.cpp                                     // 圖片轉(zhuǎn)base64格式功能代碼     ├── camera.cpp                                     // 攝像頭實(shí)現(xiàn)    ├── local_net_communication.c            // 設(shè)備協(xié)同主要功能實(shí)現(xiàn)    ├── local_net_dlist.c                              // 設(shè)備協(xié)同設(shè)備列表實(shí)現(xiàn)    ├── local_net_message.c                      // 設(shè)備協(xié)同傳輸消息實(shí)現(xiàn)    ├── local_net_udp.c                              // 設(shè)備協(xié)同udp協(xié)議實(shí)現(xiàn)    ├── local_net_utils.c                              // 設(shè)備協(xié)同通用工具實(shí)現(xiàn)    ├── main.cpp                                         // 主程序└──wpa_work.c//wifi設(shè)置實(shí)現(xiàn)
下面介紹移植的大致流程,具體細(xì)節(jié)可參考小型系統(tǒng)上運(yùn)行開(kāi)源項(xiàng)目車牌識(shí)別及移植 opencv 庫(kù)。

移植OpenCV

下載源碼

獲取源碼將 OpenCV 庫(kù)源碼放在 OpenHarmony 根目錄下的 third_party 下:

生成Makefile

在 OpenCV 源碼根目錄新建 build 目錄生成 Makefile 文件:

使用 cmake-gui 來(lái)配置編譯環(huán)境:

cd buildmake-gui..

顯示的 UI 界面如下圖:

5abeabcc-f3be-11ec-ba43-dac502259ad0.png

點(diǎn)擊 Configure 進(jìn)行配置,選擇第四個(gè)選項(xiàng)進(jìn)行配置,如下圖:

配置工具鏈:

點(diǎn)擊 Generate 生成 Makefile。

創(chuàng)建 Shell 腳本

在 OpenCV 源碼根目錄新增 build_opencv.sh:

touch build_opencv.shchmod 777 build_opencv.shvim build_opencv.sh##添加如下內(nèi)容#!/bin/shprocessor=`cat /proc/cpuinfo|grep processor | sort -u | wc -l`cd buildmake -j$processorcplib/*$1/libs/

創(chuàng)建Gn文件

在 OpenCV 源碼根目錄新增 BUILD.gn 將 OpenCV 庫(kù)加入編譯構(gòu)建:

移植EasyPR

下載源碼

獲取源碼 EasyPR 庫(kù)源碼放在源碼根目錄下的 third_party 下:

生成Makefile

在 EasyPr 源碼根目錄新建 build 目錄:

mkdir buildcd buildcmake-gui..
顯示的 UI 界面如下圖: 5abeabcc-f3be-11ec-ba43-dac502259ad0.png

點(diǎn)擊 Configure 進(jìn)行配置,選擇第四個(gè)選項(xiàng)進(jìn)行配置,如下圖:

配置工具鏈:

點(diǎn)擊 Generate 生成 Makefile。

創(chuàng)建Shell腳本

在 EasyPR 源碼根目錄新增 build_easypr.sh:

創(chuàng)建Gn文件

在 EasyPR 源碼根目錄新增 BUILD.gn 加入至編譯構(gòu)建:

vim BUILD.gn
#BUILD.gn中添加如下內(nèi)容import("http://build/lite/config/component/lite_component.gni")import("http://build/lite/ndk/ndk.gni")
root_build = rebase_path(root_build_dir)
build_ext_component("easypr_lib") {    command = "sh build_easypr.sh $root_build"    exec_path = "$root_build/../../../third_party/EasyPR"}
lite_component("easypr") {    deps = [        "http://third_party/opencv:opencv",        ":easypr_lib"    ]    features = []}
最終 OpenCV 與 EasyPR 在 third_party 目錄如下圖所示:

5ae51d84-f3be-11ec-ba43-dac502259ad0.png

在 OpenHarmony 實(shí)現(xiàn) EasyPR 需要主要分為如下三步:

1.GN 構(gòu)建,將 EasyPR 加入編譯構(gòu)建;

2.拍照,調(diào)用 OpenHarmony 拍照接口,拍攝車牌;

3.EasyPR 本地識(shí)別,調(diào)用 EasyPR 識(shí)別車牌接口并返回識(shí)別結(jié)果。

GN構(gòu)建

GN 構(gòu)建中包含了 EasyPR 的頭文件路徑 、鏈接 EasyPR 動(dòng)態(tài)庫(kù)、編譯依賴 EasyPR。如下所示:

5afe8170-f3be-11ec-ba43-dac502259ad0.png

拍照

拍照功能是基于官方文檔拍照開(kāi)發(fā)指導(dǎo)開(kāi)發(fā)的,其 demo 樣例在如下目錄:

5b0d61c2-f3be-11ec-ba43-dac502259ad0.png

在停車場(chǎng)景中二維碼識(shí)別與車牌識(shí)別共用同一份拍照代碼 ,為提高二維碼識(shí)別率在拍照初始化時(shí)須將分辨率設(shè)置為 1280*720。該改動(dòng)在進(jìn)行車牌識(shí)別時(shí)不會(huì)影響 ,初始化拍照代碼如下圖:

設(shè)置照片保存路徑在文件 camera.h 下:

因?yàn)樵谕\噲?chǎng)景中二維碼掃碼與車牌識(shí)別都會(huì)調(diào)用拍照接口,因此使用 s_runAi 作區(qū)分:

int main(int argc,char **argv){    int ret;    char licensePlate[32] = {0};    char input;    InitCamera();    PlateInit();    while(cin >> input) {        switch (input) {            case '1':                RunAICamera();                                                  // 拍照                break;            case '2':                memset(licensePlate, 0, sizeof(licensePlate));                ret = GetPlateString(IMG_PATH, licensePlate);   // 識(shí)別車牌                SAMPLE_INFO("ret -> %d, licensePlate->%s", ret, licensePlate);                break;            case 's':                PlateDeinit();                ExitCamera();                return 0;            default:                SAMPLE_ERROR("input Error");                break;        }    }    return 0;}

5b1c69e2-f3be-11ec-ba43-dac502259ad0.png

進(jìn)行拍照后會(huì)進(jìn)入拍照數(shù)據(jù)處理,當(dāng) s_runAi 為 false 說(shuō)明是二維碼識(shí)別,直接調(diào)用二維碼識(shí)別接口即可。當(dāng) s_runAi 為 true 時(shí)須將拍照的數(shù)據(jù)保存為圖片:

5b290bd4-f3be-11ec-ba43-dac502259ad0.png

將拍照數(shù)據(jù)以圖片保存路徑為“/sdcard/CaptureAi.jpg” 。

EasyPR本地識(shí)別

編寫(xiě)主程序 main.cpp 設(shè)置程序功能為按 1 拍照、按 2 顯示結(jié)果 :

編譯燒錄

前文大致概括了 OpenCV 和 EasyPR 的移植步驟,更詳細(xì)的關(guān)于環(huán)境搭建、燒錄以及項(xiàng)目源碼構(gòu)建的步驟,請(qǐng)查看參考文章本地車牌識(shí)別。

總結(jié)

編寫(xiě)車牌識(shí)別庫(kù)對(duì)外接口,相關(guān)接口使用可以參考作者文章介紹;本文章的源碼參考本地車牌識(shí)別。豐富多樣的 OpenHarmony 開(kāi)發(fā)樣例離不開(kāi)廣大合作伙伴和開(kāi)發(fā)者的貢獻(xiàn),如果你也想把自己開(kāi)發(fā)的樣例分享出來(lái),歡迎把樣例提交到 OpenHarmony 知識(shí)體系 SIG 倉(cāng)來(lái),共建開(kāi)發(fā)樣例請(qǐng)參考如何共建開(kāi)發(fā)樣例。

車牌識(shí)別器(OpenCV版本)

https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/GreyWolf_ImageRecognition_LocalAI

車牌識(shí)別器

https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/GreyWolf_EasyPR/readme.md

拍照開(kāi)發(fā)指導(dǎo)

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/guide/device-camera-control-demo-photoguide.md

作者文章列表

https://gitee.com/link?target=https%3A%2F%2Fwww.cnblogs.com%2Fsubconscious%2Fp%2F3979988.html

源碼參考

https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/GreyWolf_ImageRecognition_LocalAI

構(gòu)建開(kāi)發(fā)樣例

https://gitee.com/openharmony-sig/knowledge/blob/master/docs/co-construct_demos/README_zh.md


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3380

    瀏覽量

    42601
  • 車牌識(shí)別
    +關(guān)注

    關(guān)注

    5

    文章

    82

    瀏覽量

    15677
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41418
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3731

    瀏覽量

    16425

原文標(biāo)題:三步就能在OpenHarmony中實(shí)現(xiàn)車牌識(shí)別

文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【MediaTek X20開(kāi)發(fā)板申請(qǐng)】小區(qū)車牌自動(dòng)識(shí)別系統(tǒng)

    項(xiàng)目名稱:小區(qū)車牌自動(dòng)識(shí)別系統(tǒng)試用計(jì)劃:MediaTek X20 開(kāi)發(fā)板是一款誠(chéng)邁科技和聯(lián)發(fā)科技聯(lián)合發(fā)布的符合96board規(guī)范的開(kāi)源硬件,具有非常強(qiáng)大的運(yùn)算能力和多媒體處理能力最新的
    發(fā)表于 12-29 17:05

    【超值干貨】 揭秘車牌識(shí)別算法

    少之又少。今天給大家分享的車牌識(shí)別案例,其實(shí)在我們生活已經(jīng)很常見(jiàn)了。各大停車場(chǎng)早就配備了這種車牌自動(dòng)識(shí)別的設(shè)備。
    發(fā)表于 05-25 21:07

    移動(dòng)端車牌識(shí)別SDK算法

    越來(lái)越多人集成了,汽車保有量日益上升,越來(lái)越多公司開(kāi)發(fā)車輛管理系統(tǒng),系統(tǒng)開(kāi)發(fā)過(guò)程中,對(duì)于OCR識(shí)別算法,不少開(kāi)發(fā)人員為了節(jié)省成本,
    發(fā)表于 05-17 22:55

    基于機(jī)器學(xué)習(xí)庫(kù)opencv和平臺(tái)Jupyter Notebook的車牌識(shí)別案例

    python+opencv實(shí)現(xiàn)車牌識(shí)別
    發(fā)表于 02-28 11:08

    三步就能在OpenHarmony實(shí)現(xiàn)車牌識(shí)別

    識(shí)別系統(tǒng),基于 OpenCV 開(kāi)源庫(kù)開(kāi)發(fā)。本項(xiàng)目使用潤(rùn)和 HiSpark Taurus AI Camera(Hi3516DV300) 攝像頭
    發(fā)表于 06-28 10:15

    三步就能在OpenHarmony實(shí)現(xiàn)車牌識(shí)別

    識(shí)別結(jié)果如下所示:開(kāi)發(fā)流程本車牌識(shí)別項(xiàng)目使用 OpenHarmony 的媒體子系統(tǒng)
    發(fā)表于 07-06 11:20

    如何在OpenHarmony上使用SeetaFace2人臉識(shí)別庫(kù)?

    OpenHarmony實(shí)現(xiàn)過(guò)人臉識(shí)別功能,跟著本文帶你快速OpenHarmony標(biāo)準(zhǔn)設(shè)備上基于SeetaFace2和
    發(fā)表于 08-22 17:46

    基于DSP的圖像處理在車牌識(shí)別的應(yīng)用

    車牌識(shí)別模塊是車牌識(shí)別(LPR)系統(tǒng)的核心。論文根據(jù)國(guó)內(nèi)汽車牌照的特點(diǎn),對(duì)車牌
    發(fā)表于 02-24 14:30 ?42次下載

    圖象處理技術(shù)在車牌識(shí)別的應(yīng)用

    圖象處理技術(shù)在車牌識(shí)別的應(yīng)用利用數(shù)字圖象處理技術(shù)研究開(kāi)發(fā)車牌照自動(dòng)識(shí)別系統(tǒng)。從汽車圖象確定
    發(fā)表于 12-08 15:21 ?1061次閱讀
    圖象處理技術(shù)在<b class='flag-5'>車牌</b><b class='flag-5'>識(shí)別</b><b class='flag-5'>中</b>的應(yīng)用

    使用OpenCV進(jìn)行車牌數(shù)字識(shí)別的資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用OpenCV進(jìn)行車牌數(shù)字識(shí)別的資料免費(fèi)下載。
    發(fā)表于 01-16 08:00 ?29次下載
    使用<b class='flag-5'>OpenCV</b>進(jìn)行<b class='flag-5'>車牌</b>數(shù)字<b class='flag-5'>識(shí)別</b>的資料免費(fèi)下載

    使用Adaboost算法實(shí)現(xiàn)車牌檢測(cè)OpenCV實(shí)現(xiàn)的研究分析

    AdabtxⅪt是一個(gè)構(gòu)建精確分類器的學(xué)習(xí)算法,目標(biāo)檢測(cè)領(lǐng)域有著廣泛的應(yīng)用。OpenCV是Intel開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)。該文給出了
    發(fā)表于 09-27 17:49 ?7次下載
    使用Adaboost算法<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>車牌</b>檢測(cè)<b class='flag-5'>在</b><b class='flag-5'>OpenCV</b>上<b class='flag-5'>實(shí)現(xiàn)</b>的研究分析

    如何在RK3568開(kāi)發(fā)板上成功移植OpenJPEG開(kāi)源庫(kù)

    三方庫(kù)指其他公司或者組織提供的服務(wù)或者模塊,例如常見(jiàn)的開(kāi)源 OpenCV 庫(kù),能持續(xù)繁榮 OpenAtom OpenHarmony(簡(jiǎn)稱“
    的頭像 發(fā)表于 05-10 08:49 ?5272次閱讀

    基于SeetaFace2和OpenCV實(shí)現(xiàn)人臉識(shí)別

    相信大部分同學(xué)們都已了解或接觸過(guò)OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)了,但你一定沒(méi)在OpenHarmony實(shí)現(xiàn)過(guò)人臉
    的頭像 發(fā)表于 08-17 10:50 ?2750次閱讀

    使用OpenCV技術(shù)的車牌識(shí)別案例設(shè)計(jì)

      摘要:車牌識(shí)別系統(tǒng)在生活的使用越發(fā)廣泛,占據(jù)重要地位。車牌識(shí)別一共分為圖像處理和字符識(shí)別
    發(fā)表于 07-20 14:57 ?2次下載

    ElfBoard開(kāi)源項(xiàng)目|車牌識(shí)別項(xiàng)目技術(shù)文檔

    車牌識(shí)別項(xiàng)目基于百度智能云平臺(tái),旨在利用其強(qiáng)大的OCR服務(wù)實(shí)現(xiàn)車牌號(hào)碼的自動(dòng)識(shí)別。選擇百度智能云的原因是其高效的API接口和穩(wěn)定的服務(wù)質(zhì)量,
    的頭像 發(fā)表于 12-06 10:30 ?295次閱讀
    ElfBoard<b class='flag-5'>開(kāi)源</b>項(xiàng)目|<b class='flag-5'>車牌</b><b class='flag-5'>識(shí)別</b>項(xiàng)目技術(shù)文檔