<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于OpenCV開源庫開發的在OpenHarmony中實現車牌識別

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-06-30 11:16 ? 次閱讀

張榮

OpenHarmony 知識體系工作組

介紹

本車牌識別項目是基于開源項目 EasyPR(Easy to do Plate Recognition)實現。EasyPR 是一個開源的中文車牌識別系統,基于 OpenCV 開源庫開發。本項目使用潤和 HiSpark Taurus AI Camera(Hi3516DV300) 攝像頭開發板套件(以下簡稱 Hi3516)實現拍照車牌并顯示識別結果。采用的系統是 OpenAtom OpenHarmony (簡稱“OpenHarmony”) 3.1 Release 小型系統。首先將 Hi3516 中的攝像頭對準車牌,其距離約為 60cm~70cm 如下所示:

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

運行程序后按下 1 拍照、按 2 輸出識別結果如下所示:

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

開發流程

本車牌識別項目使用 OpenHarmony 中的媒體子系統實現。代碼基于停車場景下的本地車牌識別。進行講解,其代碼結構如下:

三方庫移植

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

移植OpenCV

下載源碼

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

生成Makefile

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

使用 cmake-gui 來配置編譯環境:

cd buildmake-gui..

顯示的 UI 界面如下圖:

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

點擊 Configure 進行配置,選擇第四個選項進行配置,如下圖:

配置工具鏈:

點擊 Generate 生成 Makefile。

創建 Shell 腳本

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

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

創建Gn文件

在 OpenCV 源碼根目錄新增 BUILD.gn 將 OpenCV 庫加入編譯構建:

移植EasyPR

下載源碼

獲取源碼 EasyPR 庫源碼放在源碼根目錄下的 third_party 下:

生成Makefile

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

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

點擊 Configure 進行配置,選擇第四個選項進行配置,如下圖:

配置工具鏈:

點擊 Generate 生成 Makefile。

創建Shell腳本

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

創建Gn文件

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

vim BUILD.gn
#BUILD.gn中添加如下內容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 實現 EasyPR 需要主要分為如下三步:

1.GN 構建,將 EasyPR 加入編譯構建;

2.拍照,調用 OpenHarmony 拍照接口,拍攝車牌;

3.EasyPR 本地識別,調用 EasyPR 識別車牌接口并返回識別結果。

GN構建

GN 構建中包含了 EasyPR 的頭文件路徑 、鏈接 EasyPR 動態庫、編譯依賴 EasyPR。如下所示:

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

拍照

拍照功能是基于官方文檔拍照開發指導開發的,其 demo 樣例在如下目錄:

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

在停車場景中二維碼識別與車牌識別共用同一份拍照代碼 ,為提高二維碼識別率在拍照初始化時須將分辨率設置為 1280*720。該改動在進行車牌識別時不會影響 ,初始化拍照代碼如下圖:

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

因為在停車場景中二維碼掃碼與車牌識別都會調用拍照接口,因此使用 s_runAi 作區分:

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);   // 識別車牌                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

進行拍照后會進入拍照數據處理,當 s_runAi 為 false 說明是二維碼識別,直接調用二維碼識別接口即可。當 s_runAi 為 true 時須將拍照的數據保存為圖片:

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

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

EasyPR本地識別

編寫主程序 main.cpp 設置程序功能為按 1 拍照、按 2 顯示結果 :

編譯燒錄

前文大致概括了 OpenCV 和 EasyPR 的移植步驟,更詳細的關于環境搭建、燒錄以及項目源碼構建的步驟,請查看參考文章本地車牌識別。

總結

編寫車牌識別庫對外接口,相關接口使用可以參考作者文章介紹;本文章的源碼參考本地車牌識別。豐富多樣的 OpenHarmony 開發樣例離不開廣大合作伙伴和開發者的貢獻,如果你也想把自己開發的樣例分享出來,歡迎把樣例提交到 OpenHarmony 知識體系 SIG 倉來,共建開發樣例請參考如何共建開發樣例。

車牌識別器(OpenCV版本)

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

車牌識別器

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

拍照開發指導

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

構建開發樣例

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


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開源
    +關注

    關注

    3

    文章

    2991

    瀏覽量

    41727
  • 車牌識別
    +關注

    關注

    5

    文章

    81

    瀏覽量

    15519
  • OpenCV
    +關注

    關注

    29

    文章

    611

    瀏覽量

    40801
  • OpenHarmony
    +關注

    關注

    23

    文章

    3328

    瀏覽量

    15171

原文標題:三步就能在OpenHarmony中實現車牌識別

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【創龍TMS320C665x開發板試用】應用:車牌識別-結項

    、TI圖像處理的的使用3、其他圖像處理算法的實現4、網絡通訊的實現 所以整個試用過程也是按這個順序一步步進行的。整個程序的運行流程為: 由上面的了解,車牌的有效區域是
    發表于 05-01 16:41

    【MediaTek X20開發板申請】小區車牌自動識別系統

    項目名稱:小區車牌自動識別系統試用計劃:MediaTek X20 開發板是一款誠邁科技和聯發科技聯合發布的符合96board規范的開源硬件,具有非常強大的運算能力和多媒體處理能力最新的
    發表于 12-29 17:05

    【超值干貨】 揭秘車牌識別算法

    少之又少。今天給大家分享的車牌識別案例,其實在我們生活已經很常見了。各大停車場早就配備了這種車牌自動識別的設備。
    發表于 05-25 21:07

    移動端車牌識別SDK算法

    越來越多人集成了,汽車保有量日益上升,越來越多公司開發車輛管理系統,系統開發過程中,對于OCR識別算法,不少開發人員為了節省成本,
    發表于 05-17 22:55

    基于機器學習opencv和平臺Jupyter Notebook的車牌識別案例

    python+opencv實現車牌識別
    發表于 02-28 11:08

    三步就能在OpenHarmony實現車牌識別

    識別系統,基于 OpenCV 開源開發。本項目使用潤和 HiSpark Taurus AI Camera(Hi3516DV300) 攝像頭
    發表于 06-28 10:15

    三步就能在OpenHarmony實現車牌識別

    識別結果如下所示:開發流程本車牌識別項目使用 OpenHarmony 的媒體子系統
    發表于 07-06 11:20

    如何在OpenHarmony上使用SeetaFace2人臉識別?

    NAPI接口的開發。OpenCV移植OpenCV是一個功能非常強大的開源計算機視覺。此
    發表于 08-17 17:41

    如何在OpenHarmony上使用SeetaFace2人臉識別?

    OpenHarmony實現過人臉識別功能,跟著本文帶你快速OpenHarmony標準設備上基于SeetaFace2和
    發表于 08-22 17:46

    【KV260視覺入門套件試用體驗】六、VITis AI車牌檢測&amp;車牌識別

    視覺技術實現的自動識別車輛牌照號碼的過程。該技術通過圖像采集、車牌檢測、字符分割和字符識別等步驟,實現
    發表于 09-26 16:28

    使用OpenCV進行車牌數字識別的資料免費下載

    本文檔的主要內容詳細介紹的是使用OpenCV進行車牌數字識別的資料免費下載。
    發表于 01-16 08:00 ?28次下載
    使用<b class='flag-5'>OpenCV</b>進行<b class='flag-5'>車牌</b>數字<b class='flag-5'>識別</b>的資料免費下載

    使用Adaboost算法實現車牌檢測在OpenCV實現的研究分析

    AdabtxⅪt是一個構建精確分類器的學習算法,在目標檢測領域有著廣泛的應用。OpenCV是Intel開源計算機視覺庫。該文給出了在OpenCV上利用Adaboost算法,實現車輛
    發表于 09-27 17:49 ?7次下載
    使用Adaboost算法<b class='flag-5'>實現</b><b class='flag-5'>車牌</b>檢測在<b class='flag-5'>OpenCV</b>上<b class='flag-5'>實現</b>的研究分析

    openharmony開源社區 OpenHarmony開發樣例上新了

    openharmony開源社區 OpenHarmony開發樣例上新了 OpenHarmony 開源
    的頭像 發表于 04-25 16:37 ?2120次閱讀

    基于SeetaFace2和OpenCV實現人臉識別

    相信大部分同學們都已了解或接觸過OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)了,但你一定沒在OpenHarmony實現過人臉
    的頭像 發表于 08-17 10:50 ?1771次閱讀

    使用OpenCV技術的車牌識別案例設計

      摘要:車牌識別系統在生活中的使用越發廣泛,占據重要地位。車牌識別一共分為圖像處理和字符識別兩部分。本文首先使用
    發表于 07-20 14:57 ?2次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>