日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一维二维码的提取、识别和产生

發布時間:2025/7/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一维二维码的提取、识别和产生 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一維二維碼的提取、識別和產生 零、相關說明: ? ? 在“jsxyhelu.cnblogs.com/機器視覺”欄目主要介紹和圖像處理和機器視覺相關的的成套的解決方案、思路和軟件集。希望能夠為大家在實際工作中解決具體問題提供一些幫助。 一、背景資料: ? ? ??現在一維碼、二維碼廣泛使用于工業各方面。很多和圖像處理相關的需求也有所涉及。這里也看過一些論文,里面有一些方法還是art-of-air的,也有一些具備一定參考價值。這里只是談一談一般情況下的提取和識別。對于特殊情況,肯定要特殊對待,其實本身是一個增強的處理。在條碼的處理和產生部分,主要借助了zxing ? ? ?? 那么,問題可以分為三個 ? ? ? 1.1如何從圖片中獲取條碼區域并且提取條碼(由于缺乏二維碼圖片所有這里只分析一維碼,以后有了二維碼實際拍攝的圖片再補上); ? ? ? 1.2如何識別條碼; ? ? ? 1.3如何參數條碼 二、主要內容: ? ? ? 2.1如何從圖片中獲取條碼區域并且提取條碼 ? ? ? 條碼(也就是一維碼)在設計的時候就被設計成縱向冗余的。提取就可以借助這一特性。 ? ? ? 比如這樣的圖像,經過canny->dilate->erode就可以得到這樣的結果
? ? Mat?cannyClone=?Mat::zeros(Size(gray.cols,gray.rows),gray.type());
????Canny(gray,canny,100,255);
????Mat?element?=?getStructuringElement(MORPH_ELLIPSE,Size(7,3));
????morphologyEx(canny,canny,CV_MOP_DILATE,element);
????morphologyEx(canny,canny,CV_MOP_ERODE?,element);
????imwrite("canny.jpg",canny); ? ? ? 特征已經比較明顯了,緊接著選取所有輪廓中最大的,并且將這個最大輪廓的外界長方形整個的扣出來,一般情況下就能夠得到正確的結果:
findContours(canny,contours,CV_RETR_TREE,CV_CHAIN_APPROX_NONE);
????for?(int?i=0;i<contours.size();i++)
????{
????????int?itmp?=??contourArea(contours[i]);
????????if?(imaxcontour?<?itmp?)
????????{
????????????imax?=?i;
????????????imaxcontour?=?itmp;
????????}
????}
????//找到輪廓的處理
????Rect?boundRect;//最小外接矩形
????drawContours(cannyClone,contours,imax,Scalar(255),-1);
????boundRect?=?boundingRect(Mat(contours[imax]));
????Mat?srcRoi?=?src(boundRect);
????imwrite("barcode.jpg",srcRoi); ? 2.2如何識別條碼; ? ? ?借助zxing的相關方法,這里的解法是一維/二維通用的? string?opFilePath?=?System.Environment.CurrentDirectory?+?"\\result.jpg";
????????????MultiFormatReader?mutiReader?=?new?com.google.zxing.MultiFormatReader();
????????????Bitmap?img?=?(Bitmap)Bitmap.FromFile(opFilePath);
????????????if?(img?==?null)
????????????????return;
????????????LuminanceSource?ls?=?new?RGBLuminanceSource(img,?img.Width,?img.Height);
????????????BinaryBitmap?bb?=?new?BinaryBitmap(new?com.google.zxing.common.HybridBinarizer(ls));
????????????Result?r?=?mutiReader.decode(bb);
????????????tb.Text?=?r.Text; 2.2如何產生條碼; ? ? ? 同樣是借助zxing的相關方法,這個具體看代碼和相關資料。 ? ? ? ? 三、遺留問題: ? ? ? 由于zxing沒有從源代碼上吸收,所以無法保證算法的強壯性和可移植性,許多時候最終平臺的選擇還要考慮到zxing的本身的問題; ? ? ? 同時,對于一些可能比較復雜的情況,可能這里的比較簡單的獲取方法還有問題,還需要具體問題具體對待。 ? ? ?





轉載于:https://www.cnblogs.com/jsxyhelu/p/4650158.html

總結

以上是生活随笔為你收集整理的一维二维码的提取、识别和产生的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。