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

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-C-Demo.git

注:
* 此處可能會因網(wǎng)絡原因造成卡頓,請耐心等待。
* 如果實在要在gitHub網(wǎ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 例程運行
通過按鍵Ctrl+Shift+T創(chuàng)建一個新窗口,執(zhí)行adb shell命令,進入板卡運行環(huán)境。
adb shell

進入板卡后,定位到例程上傳的位置,如下所示:
cd /userdata/Demo
運行例程命令如下所示:
./test-qrdecode EASY-EAI-QRcode.png
2.4 運行效果
QRCode-detect的Demo執(zhí)行效果如下所示:
以下二維碼識別成功了:
API的詳細說明,以及API的調用(本例程源碼),詳細信息見下方說明。
3. 二維碼識別API說明
3.1 引用方式
為方便客戶在本地工程中直接調用我們的EASY EAI api庫,此處列出工程中需要鏈接的庫以及頭文件等,方便用戶直接添加。
選項 | 描述 |
頭文件目錄 | easyeai-api/algorithm_api/qrdecode |
庫文件目錄 | easyeai-api/algorithm_api/qrdecode |
庫鏈接參數(shù) | -lpthread -lqrdecode -lzbar |
3.2 二維碼識別運行函數(shù)
二維碼識別運行函數(shù)原型如下所示。
int qr_decode(cv::Mat src, struct qrcode_info *p_info)
具體介紹如下所示。
函數(shù)名:qr_decode() | |
頭文件 | qrdecode.h |
輸入?yún)?shù) | src:Opencv Mat格式圖像 |
path:二維碼檢測的結果輸出 | |
返回值 | 成功返回: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; } 審核編輯 黃宇
-
算法
+關注
關注
23文章
4687瀏覽量
94443 -
源碼
+關注
關注
8文章
665瀏覽量
30081 -
開發(fā)板
+關注
關注
25文章
5432瀏覽量
101236 -
rv1126
+關注
關注
0文章
106瀏覽量
3288
發(fā)布評論請先 登錄
基于RK3576開發(fā)板的二維碼生成

基于RK3576開發(fā)板的二維碼識別算法

基于RV1126開發(fā)板實現(xiàn)人臉檢測方案

基于RV1126開發(fā)板實現(xiàn)二維碼識別方案

基于RV1126開發(fā)板實現(xiàn)人臉檢測方案

基于RV1126開發(fā)板實現(xiàn)自學習圖像分類方案

基于RV1126開發(fā)板實現(xiàn)人臉識別方案

基于RV1126開發(fā)板實現(xiàn)人臉檢測方案

基于RV1126開發(fā)板實現(xiàn)人臉識別方案

評論