91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內不再提示

瑞芯微(EASY EAI)RV1126B 車牌識別

廣州靈眸科技有限公司 ? 2026-04-03 09:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 車牌識別檢測簡介

EAI-LPR是一個高性能中文車牌識別框架,識別速度快。準確率高,在出入口場景下,準確率可達98%;支持多種車牌類型,包括單行藍牌、單行黃牌、新能源車牌、教練車牌等,還可有限支持白色警用車牌、使館/港澳車牌、雙層黃牌、武警車牌等;采用端到端識別,無需字符分割,直接輸出識別結果。

使用輕量級卷積神經(jīng)網(wǎng)絡定位圖像中的車牌區(qū)域,對傾斜的車牌進行仿射變換矯正,使其水平,再采用端到端的OCR模型直接輸出車牌號碼。廣泛應用于智能交通、安防監(jiān)控、智慧城市、移動應用等領域,如車輛出入口管理、停車場系統(tǒng)、車輛軌跡追蹤、異常行為檢測、交通流量統(tǒng)計、違章抓拍以及手機APP車牌識別功能等。

本教程針對EAI-LPR車牌識別算法部署到EASY-EAI-Nano-TB(RV1126B)進行說明。

本車牌識別算法在數(shù)據(jù)集表現(xiàn)如下所示:

v2-14cafec7e41fb8838e146fe5430a4a65_720w.webp

基于EASY-EAI-Nano-TB硬件主板的運行效率:

v2-28f0190519036a2502df39db53cad353_720w.webp

2. 快速上手

2.1 開發(fā)環(huán)境準備

如果您初次閱讀此文檔,請閱讀《入門指南/開發(fā)環(huán)境準備/Easy-Eai編譯環(huán)境準備與更新》,并按照其相關的操作,進行編譯環(huán)境的部署。

在PC端Ubuntu系統(tǒng)中執(zhí)行run腳本,進入EASY-EAI編譯環(huán)境,具體如下所示。

cd ~/develop_environment ./run.sh 2204

v2-e1127efd76bcca3331922be6d17e546f_720w.webp

2.2 源碼下載

在EASY-EAI編譯環(huán)境下創(chuàng)建存放源碼倉庫的管理目錄:

cd /opt mkdir EASY-EAI-Toolkit cd EASY-EAI-Toolkit

通過git工具,在管理目錄內克隆遠程倉庫

git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-1126B.git

v2-67d8e73ccfe13280db05364195d1679f_720w.webp

注:

* 此處可能會因網(wǎng)絡原因造成卡頓,請耐心等待。

* 如果實在要在gitHub網(wǎng)頁上下載,也要把整個倉庫下載下來,不能單獨下載本實例對應的目錄。

2.3 模型部署

要完成算法Demo的執(zhí)行,需要先下載車牌識別算法模型。

百度網(wǎng)盤鏈接為:https://pan.baidu.com/s/1y-NIDZjIZCEqZLxlYgU8Vw?pwd=1234 (提取碼:1234 )。

v2-36c958dca68e208700b31e6db0abf811_720w.webp

同時需要把下載的車牌識別算法模型復制粘貼到Release/目錄:

v2-f94cc2e4affd7f24d5387ecaad63b110_720w.webp

2.4 例程編譯

進入到對應的例程目錄執(zhí)行編譯操作,具體命令如下所示:

cd EASY-EAI-Toolkit-1126B/Demos/algorithm-lpr/ ./build.sh cpres

注:

* 由于依賴庫部署在板卡上,因此交叉編譯過程中必須保持/mnt掛載。

* 若build.sh腳本帶有cpres參數(shù),則會把Release/目錄下的所有資源都拷貝到開發(fā)板上。

v2-533a1f5deaa915f042c84b162462bb45_720w.webp

2.5 例程運行及效果

通過串口調試或ssh調試,進入板卡后臺,定位到例程部署的位置,如下所示:

cd /userdata/Demo/algorithm-lpr/

v2-1684d0a7d99f51b84f40ed151b29dcab_720w.webp

運行例程命令如下所示:

sudo ./test-lpr lpr_det.model lpr_cls.model lpr_rec.model 2.jpg

v2-7cbf61c43c8a750d2485aaabfabbf4c7_720w.webp

在EASY-EAI編譯環(huán)境可以取回測試圖片:

cp /mnt/userdata/Demo/algorithm-lpr/dst.jpg .

v2-b1aea2791beae088858570f57947fcbb_720w.webp

結果圖片如下所示:

v2-1c9963ce8cc0307167fd8af10ca84f17_720w.webp

API的詳細說明,以及API的調用(本例程源碼),詳細信息見下方說明。

3. 車牌識別API說明

3.1 引用方式

為方便客戶在本地工程中直接調用我們的EASY EAI api庫,此處列出工程中需要鏈接的庫以及頭文件等,方便用戶直接添加。

v2-d7de3ce0385ccf0a372a29ab65134fe2_720w.webp

3.2 車牌識別初始化函數(shù)

車牌識別初始化函數(shù)原型如下所示。

int lpr_init(const char *p_det_model, const char *p_cls_model, const char *p_rec_model, rknn_lpr_t *p_lpr)

具體介紹如下所示。

v2-51e560efcb78ddc6c24ef0c2c1bbda8f_720w.webp

3.3 車牌識別運行函數(shù)

車牌識別運行函數(shù)lpr_run原型如下所示。

std::vector lpr_run(cv::Mat image, rknn_lpr_t *p_lpr, float conf_thresh, float nms_thresh);

具體介紹如下所示。

v2-6fd29695343375ad06829c1006eb7845_720w.webp

3.4 車牌識別釋放函數(shù)

車牌識別釋放函數(shù)原型如下所示。

int lpr_release(rknn_lpr_t *p_lpr)

具體介紹如下所示。

v2-c92b80297936c2a895e39dc2de10258d_720w.webp

4. 車輛識別算法例程

例程目錄為Demos/algorithm-car/test-lpr.cpp,操作流程如下。

v2-b7a15633aa33f8296b5e28e4d2326471_720w.webp

參考例程如下所示。

#include #include #include #include #include #include #include #include #include #include "lpr_detector.h" #include "lpr_classifier.h" #include "lpr_recognizer.h" #include "lpr.h" #include "put_text_zh.h" /******************************************* * 車牌識別demo ********************************************/ int lpr_demo(char *p_det_path, char *p_cls_path, char *p_rec_path, char *p_img_path) { struct timeval start; struct timeval end; float time_use=0; std::vector layers = { "單層", "雙層"}; std::vector colors = { "藍色", "綠色", "黃色" }; PutTextZH put_text = PutTextZH("./simhei.ttf"); cv::Scalar font_size{ 30, 0.5, 0.1, 0 }; // 字體大小/空白比例/間隔比例/旋轉角度 put_text.setFont(nullptr, &font_size, nullptr, nullptr); cv::Mat image = cv::imread(p_img_path); rknn_lpr_t lpr; // 車牌識別初始化 int ret; ret = lpr_init(p_det_path, p_cls_path, p_rec_path, &lpr); // 車牌識別 float conf_thresh = 0.35; float nms_thresh = 0.35; gettimeofday(&start,NULL); std::vector results = lpr_run(image, &lpr, conf_thresh, nms_thresh); gettimeofday(&end,NULL); time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒 printf("車牌識別耗時: %f\n",time_use/1000); // 繪制結果 int num = results.size(); for (int i = 0; i < num; i++) { cv::rectangle(image, results[i].box, CV_RGB(255, 0, 0), 2); for (int j = 0; j < 4; j++) { cv::circle(image, results[i].key_pts[j], 2, CV_RGB(0, 255, 0), 3); } //char p_text[128] = ""; //for (int j = 0; j < results[i].char_list.size(); j++) { // sprintf(p_text, "%s%s", p_text, results[i].char_list[j].c_str()); //} //sprintf(p_text, "%s score: %0.2f", p_text, results[i].det_score); //cv::putText(image, p_text, cv::Point(results[i].box.x, results[i].box.y - 5), 1, 2, CV_RGB(255, 0, 0), 3); std::string temp_str; int num = results[i].char_list.size(); for (int j = 0; j < num; j++) { temp_str += results[i].char_list[j]; } // 轉換為寬字符字符串 std::wstring_convert> converter; std::wstring wstr = converter.from_bytes(temp_str); // 如果需要 wchar_t 數(shù)組 wchar_t w_text[256]; wcsncpy(w_text, wstr.c_str(), sizeof(w_text) / sizeof(wchar_t)); w_text[255] = L'\0'; put_text.putText(image, w_text, cv::Point(results[i].box.x, results[i].box.y - 5), CV_RGB(255, 0, 0)); printf("車牌%d:%s, 顏色: %s, 車牌層數(shù): %s\n", i+1, temp_str.c_str(), colors[results[i].color].c_str(), layers[results[i].layer_num].c_str()); } cv::imwrite("dst.jpg", image); // 車牌識別釋放 ret = lpr_release(&lpr); return ret; } /******************************************* * 車牌檢測demo ********************************************/ int lpr_detector_demo(char *p_det_path, char *p_img_path) { cv::Mat image = cv::imread(p_img_path); rknn_lpr_detector_t lpr_det; // 車牌檢測初始化 int ret = rknn_lpr_detector_init(p_det_path, &lpr_det); // 車牌檢測 float conf_thresh = 0.35; float nms_thresh = 0.35; std::vector results = rknn_lpr_detector_calc(image, &lpr_det, conf_thresh, nms_thresh); // 繪制結果 int num = results.size(); for (int i = 0; i < num; i++) { cv::rectangle(image, results[i].box, CV_RGB(255, 0, 0), 2); for (int j = 0; j < 4; j++) { cv::circle(image, results[i].key_pts[j], 2, CV_RGB(0, 255, 0), 3); } printf("Layer num = %d\n", results[i].layer_num); } cv::imwrite("det.jpg", image); // 車牌檢測釋放 ret = rknn_lpr_detector_deinit(&lpr_det); return ret; } /******************************************* * 車牌分類Demo ********************************************/ int lpr_classifer_demo(char *p_cls_path, char *p_img_path) { int label = 0; float score; std::vector colors = { "blue", "green", "yellow" }; cv::Mat image = cv::imread(p_img_path); // 車牌分類初始化 rknn_lpr_classifer_t lpr_cls; int ret = rknn_lpr_classifer_init(p_cls_path, &lpr_cls); // 車牌分類計算 ret = rknn_lpr_classifer_calc(image, &lpr_cls, label, score); // 車牌分類釋放 ret = rknn_lpr_classifer_deinit(&lpr_cls); return ret; } /******************************************* * 車牌字符識別Demo ********************************************/ int lpr_recognizer_demo(char *p_rec_path, char *p_img_path) { float score; cv::Mat image = cv::imread(p_img_path); // 車牌字符識別初始化 rknn_lpr_recognizer_t lpr_rec; int ret = rknn_lpr_recognizer_init(p_rec_path, &lpr_rec); //車牌字符識別計算 10ms std::vector char_list; ret = rknn_lpr_recognizer_calc(image, &lpr_rec, char_list, score); /* char p_text[128] = ""; int num = char_list.size(); for (int j = 0; j < num; j++) { sprintf(p_text,"%s%s", p_text, char_list[j].c_str()); } printf("車牌字符識別耗時:%0.2fms, 車牌號:%s, score = %0.2f\n", run_time, p_text, score); */ // 車牌字符識別釋放 ret = rknn_lpr_recognizer_deinit(&lpr_rec); return ret; } /******************************************* * 主函數(shù) ********************************************/ int main(int argc, char **argv) { if (argc != 5) { printf("%s \n", argv[0]); return -1; } char *p_det_path = argv[1]; char *p_cls_path = argv[2]; char *p_rec_path = argv[3]; char *p_img_path = argv[4]; // 車牌識別demo lpr_demo(p_det_path, p_cls_path, p_rec_path, p_img_path); //// 車牌檢測demo //lpr_detector_demo(p_det_path, p_img_path); //// 車牌分類Demo //lpr_classifer_demo(p_cls_path, p_img_path); ////// 車牌字符識別Demo //lpr_recognizer_demo(p_rec_path, p_img_path); return 0; }

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

    關注

    1819

    文章

    50206

    瀏覽量

    266408
  • 開發(fā)板
    +關注

    關注

    26

    文章

    6358

    瀏覽量

    119625
  • 瑞芯微
    +關注

    關注

    27

    文章

    814

    瀏覽量

    54565
  • EASY-EAI靈眸科技

    關注

    4

    文章

    75

    瀏覽量

    3693
  • RV1126B
    +關注

    關注

    0

    文章

    65

    瀏覽量

    218
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    (EASY EAI)RV1126B 音頻輸入

    1.聲卡資源介紹EASY-EAI-Nano-TB僅有一塊由RV1126B主控輸出的聲卡。通過串口調試或ssh調試,可以進入開發(fā)板終端。執(zhí)行aplay命令查看聲卡相關的詳細信息,如下所示
    的頭像 發(fā)表于 12-18 13:41 ?2477次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音頻輸入

    (EASY EAI)RV1126B PWM使用

    1.PWM簡介1.1開發(fā)板PWM資源1.2查找PWM節(jié)點rv1126b的pwm資源表如下:【PWM1CH0】對應的是pwm1_4ch_0,寄存地址為20700000。【PWM1CH1】對應
    的頭像 發(fā)表于 01-06 10:49 ?7578次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> PWM使用

    (EASY EAI)RV1126B 音頻輸出

    1.聲卡資源介紹EASY-EAI-Nano-TB僅有一塊由RV1126B主控輸出的聲卡。通過串口調試或ssh調試,可以進入開發(fā)板終端。執(zhí)行aplay命令查看聲卡相關的詳細信息,如下所示
    的頭像 發(fā)表于 04-01 17:13 ?1942次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音頻輸出

    EASY EAI Nano-TB(RV1126B)開發(fā)板試用】+初識篇

    Nano-TB是靈眸科技研發(fā)的一款應用于AIoT領域的開發(fā)板,它基于RV1126B處理器,集成了4個Cortex-A53及獨立的NEON協(xié)處理器,它支持4K@30fps的H.
    發(fā)表于 10-25 22:06

    EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-燈閃

    接上文【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】開箱測評 https://pan.baidu.com/s/15pnbJXPN5TrfV2KfsKaZyQ?pwd=1234 打開
    發(fā)表于 11-01 21:26

    EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目

    接上文【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】通過wifi連接,使用ssh登錄EASY EAI Nano-TB(
    發(fā)表于 11-02 18:34

    EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈按鈕項目

    0接上文【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目-實現(xiàn)開機起動 EASYEAINano-TB(RV1126B
    發(fā)表于 11-03 10:00

    請問各位大佬,如何解決, RV1126B 使用 mpp 自帶工具 調試時,內核直接報錯崩潰!

    請問各位大佬,如何解決, RV1126B 使用 mpp 自帶工具 調試時,內核直接報錯崩潰! 調試輸出如下:
    發(fā)表于 11-19 16:01

    EASY EAI Nano-TB(RV1126B)開發(fā)板試用】+1、開箱上電

    ,避免因接觸不良導致顯示或采集異常。 2 硬件解析:強勁AI核心與豐富接口 2.1 核心處理器性能 EASY EAI Nano-TB開發(fā)板的核心基于
    發(fā)表于 11-19 21:39

    EASY EAI Nano-TB(RV1126B)開發(fā)板試用】介紹、系統(tǒng)安裝

    ,并介紹了系統(tǒng)鏡像安裝部署的相關流程。 介紹 EASY-EAI-Nano-TB是靈眸科技研發(fā)的一款應用于AIoT領域的AIOT主板。 核心板基于
    發(fā)表于 12-23 18:05

    RV1126系列選型指南:從RV1126RV1126B,一文看懂升級差異

    2025年7月,正式發(fā)布新一代AI視覺芯片RV1126B。作為其金牌方案商,EASYEAI靈眸科技同步推出搭載該芯片的AIoT核心板EAI11
    的頭像 發(fā)表于 09-04 10:50 ?4891次閱讀
    <b class='flag-5'>RV1126</b>系列選型指南:從<b class='flag-5'>RV1126</b>到<b class='flag-5'>RV1126B</b>,一文看懂升級差異

    【免費試用】EASY EAI Nano-TB(RV1126B)開發(fā)套件評測

    EASY-EAI-Nano-TB是靈眸科技研發(fā)的一款應用于AIoT領域的AIOT主板。核心板基于RV1126B處理器設計,并引入了新
    的頭像 發(fā)表于 09-23 08:09 ?1148次閱讀
    【免費試用】<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b> Nano-TB(<b class='flag-5'>RV1126B</b>)開發(fā)套件評測

    RV1126B特性概述

    RV1126BRockchip在2025年第二季度全新推出的Arm架構AI視覺芯片,搭載4核Cortex-A53與自研3Tops算力NPU。全面替代上一代的
    的頭像 發(fā)表于 10-09 11:22 ?2017次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RV1126B</b>特性概述

    替代升級實錘!實測RV1126B,CPU性能吊打RV1126

    AI智能芯片迭代提速,推出了全新的Arm架構AI視覺芯片RV1126B,是否替換RV1126,CPU性能是擠牙膏還是大突破。帶著這些核
    的頭像 發(fā)表于 12-11 17:13 ?2374次閱讀
    替代升級實錘!實測<b class='flag-5'>RV1126B</b>,CPU性能吊打<b class='flag-5'>RV1126</b>

    (EASY EAI)RV1126B 人體關鍵點識別

    的特點。本人員檢測算法在數(shù)據(jù)集表現(xiàn)如下所示:基于EASY-EAI-Nano-TB(RV1126B)硬件主板的運行效率:17個人體關鍵點索引定義:2.快速上手2.1開發(fā)
    的頭像 發(fā)表于 01-23 10:13 ?3025次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 人體關鍵點<b class='flag-5'>識別</b>