基於機器視覺技術的條形碼在線識別系統設計
本設計研究EAN13條形碼識別的譯碼技術,在基於機器視覺技術上,構建了一套條形碼在線檢測識別系統,系統將由以下幾個部分構成:條形碼圖像定位與采集、計算機圖像預處理、條形碼圖像中值濾波去噪、條碼解析與識讀。經過實驗,確定該系統可對絕大部分EAN13條形碼進行快速並准確的識讀。
關鍵詞: 機器視覺; 圖像處理; 條碼識別;在線檢測;EAN13條形碼;QT
一:設計目標
- 掌握條形碼識別原理;
- 熟悉條形碼識別的概念,發展現狀;
- 熟悉機器視覺系統設計的一般流程;
- 掌握常用圖像處理技術;
設計內容與要求
1.完成基於機器視覺技術的條形碼在線識別系統算法設計;
2.完成基於機器視覺技術的條形碼在線識別系統上位機設計;
3.EAN13條形碼識別誤差率≤2%;
二:qt程序
三:條形碼定位算法
#include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include<iostream> #include<stdlib.h> using namespace cv; using namespace std; int main() { Mat Img,grayImg,gradx,blurgradx,gradAbsx,threshImg,close_threshImg,erode_threshImg,dilate_threshImg; Img=imread("E:\\txm1.jpg"); imshow("0原圖",Img); cvtColor(Img,grayImg,COLOR_BGR2GRAY); imshow("1灰度圖",grayImg); Scharr(grayImg,gradx,CV_16S,1,0); imshow("2邊緣檢測圖",gradx); convertScaleAbs(gradx,gradAbsx); imshow("3Abs圖",gradAbsx); blur(gradAbsx,blurgradx,Size(5,5)); imshow("4濾波圖",blurgradx); threshold(blurgradx,threshImg,150,255,CV_8UC1); imshow("4.5閾值分割圖",threshImg); Mat kernal=getStructuringElement(MORPH_RECT,Size(25,5)); morphologyEx(threshImg,close_threshImg,MORPH_CLOSE,kernal); imshow("5閉操作",close_threshImg); Mat edkl=getStructuringElement(MORPH_RECT,Size(3,3)); erode(close_threshImg,erode_threshImg,edkl,Point(-1,-1),8); imshow("6腐蝕操作",erode_threshImg); dilate(erode_threshImg,dilate_threshImg,edkl,Point(-1,-1),15); imshow("7膨脹操作",dilate_threshImg); waitKey(0); return 0; }
四:程序運行及條形碼識別測試
詳細代碼:https://github.com/hhhvvvddd/Bar-Code-Recognition-System
定位算法:https://www.cnblogs.com/fpzs/p/9637795.html
——————
淺談則止,深入理解AI大道理
掃描下方“AI大道理”,選擇“關注”公眾號
歡迎加入!