1. 二維碼識別簡介
二維條碼/二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號信息的;在代碼編制上巧妙地利用構(gòu)成計算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個與二進(jìn)制相對應(yīng)的幾何形體來表示文字?jǐn)?shù)值信息,通過圖象輸入設(shè)備或光電掃描設(shè)備自動識讀以實(shí)現(xiàn)信息自動處理:它具有條碼技術(shù)的一些共性:每種碼制有其特定的字符集;每個字符占有一定的寬度;具有一定的校驗(yàn)功能等。同時還具有對不同行的信息自動識別功能、及處理圖形旋轉(zhuǎn)變化點(diǎn)。

2. 快速上手
2.1 開發(fā)環(huán)境準(zhǔn)備
如果您初次閱讀此文檔,請閱讀《入門指南/開發(fā)環(huán)境準(zhǔn)備/Easy-Eai編譯環(huán)境準(zhǔn)備與更新》,并按照其相關(guān)的操作,進(jìn)行編譯環(huán)境的部署。
在PC端Ubuntu系統(tǒng)中執(zhí)行run腳本,進(jìn)入EASY-EAI編譯環(huán)境,具體如下所示。
cd ~/develop_environment ./run.sh

2.2 源碼下載以及例程編譯
在EASY-EAI編譯環(huán)境下創(chuàng)建存放源碼倉庫的管理目錄:
cd /opt mkdir EASY-EAI-Toolkit cd EASY-EAI-Toolkit
通過git工具,在管理目錄內(nèi)克隆遠(yuǎn)程倉庫
git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-C-Demo.git

注:
* 此處可能會因網(wǎng)絡(luò)原因造成卡頓,請耐心等待。
* 如果實(shí)在要在gitHub網(wǎng)頁上下載,也要把整個倉庫下載下來,不能單獨(dú)下載本實(shí)例對應(yīng)的目錄。
進(jìn)入到對應(yīng)的例程目錄執(zhí)行編譯操作,具體命令如下所示:
cd EASY-EAI-Toolkit-C-Demo/algorithm-qrdecode/ ./build.sh cpres
注:
* 若build.sh腳本帶有cpres參數(shù),則會把Release/目錄下的所有資源都拷貝到開發(fā)板上。
* 若build.sh腳本不帶任何參數(shù),則僅會拷貝demo編譯出來的可執(zhí)行文件。
* 由于依賴庫部署在板卡上,因此交叉編譯過程中必須保持adb連接。

2.3 例程運(yùn)行
通過按鍵Ctrl+Shift+T創(chuàng)建一個新窗口,執(zhí)行adb shell命令,進(jìn)入板卡運(yùn)行環(huán)境。
adb shell

進(jìn)入板卡后,定位到例程上傳的位置,如下所示:
cd /userdata/Demo
運(yùn)行例程命令如下所示:
./test-qrdecode EASY-EAI-QRcode.png
2.4 運(yùn)行效果
QRCode-detect的Demo執(zhí)行效果如下所示:

以下二維碼識別成功了:

API的詳細(xì)說明,以及API的調(diào)用(本例程源碼),詳細(xì)信息見下方說明。
3. 二維碼識別API說明
3.1 引用方式
為方便客戶在本地工程中直接調(diào)用我們的EASY EAI api庫,此處列出工程中需要鏈接的庫以及頭文件等,方便用戶直接添加。
| 選項 | 描述 |
| 頭文件目錄 | easyeai-api/algorithm_api/qrdecode |
| 庫文件目錄 | easyeai-api/algorithm_api/qrdecode |
| 庫鏈接參數(shù) | -lpthread -lqrdecode -lzbar |
3.2 二維碼識別運(yùn)行函數(shù)
二維碼識別運(yùn)行函數(shù)原型如下所示。
int qr_decode(cv::Mat src, struct qrcode_info *p_info)
具體介紹如下所示。
| 函數(shù)名:qr_decode() | |
| 頭文件 | qrdecode.h |
| 輸入?yún)?shù) | src:Opencv Mat格式圖像 |
| path:二維碼檢測的結(jié)果輸出 | |
| 返回值 | 成功返回:0 |
| 失敗返回:-1 | |
| 注意事項 | 無 |
4. 二維碼識別算法例程
例程目錄為Toolkit-C-Demo/algorithm-qrdecode/test-qrdecode.cpp,操作流程如下。

參考例程如下所示。
#include #include #include "qrdecode.h" using namespace cv; int main(int argc, char **argv) { if( argc != 2) { printf("./test-qrdecode xxxn"); return -1; } Mat image; image = cv::imread(argv[1], 1); struct qrcode_info info; qr_decode(image, &info); printf("x1:%dn", info.x1); printf("x2:%dn", info.x2); printf("y1:%dn", info.y1); printf("y2:%dn", info.y2); printf("type:%sn", info.type); printf("result:%sn", info.result); rectangle(image, Point(info.x1, info.y1), Point(info.x2, info.y2), Scalar(0, 255, 0), 3); imwrite("result.jpg", image); return 0; } 審核編輯 黃宇
-
算法
+關(guān)注
關(guān)注
23文章
4784瀏覽量
98042 -
源碼
+關(guān)注
關(guān)注
8文章
685瀏覽量
31317 -
開發(fā)板
+關(guān)注
關(guān)注
26文章
6289瀏覽量
118051 -
rv1126
+關(guān)注
關(guān)注
0文章
118瀏覽量
4296
發(fā)布評論請先 登錄
【嘉楠堪智K230開發(fā)板試用體驗(yàn)】+二維碼識別
基于RK3576開發(fā)板的二維碼識別算法
基于RV1126開發(fā)板實(shí)現(xiàn)人臉檢測方案
基于RV1126開發(fā)板實(shí)現(xiàn)二維碼識別方案
基于RV1126開發(fā)板實(shí)現(xiàn)人臉檢測方案
基于RV1126開發(fā)板實(shí)現(xiàn)人臉識別方案
基于RV1126開發(fā)板實(shí)現(xiàn)人臉檢測方案
基于RV1126開發(fā)板實(shí)現(xiàn)人臉識別方案
基于RV1126開發(fā)板的二維碼識別算法開發(fā)
評論