最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

10個(gè)步驟Opencv輕松檢測(cè)出圖片中條形碼

 更新時(shí)間:2018年01月22日 16:12:53   作者:-牧野-  
這篇文章主要為大家詳細(xì)介紹了Opencv輕松檢測(cè)出圖片中條形碼的10個(gè)步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家分享了Opencv輕松檢測(cè)出圖片中條形碼的步驟,供大家參考,具體內(nèi)容如下

1. 原圖像大小調(diào)整,提高運(yùn)算效率


2. 轉(zhuǎn)化為灰度圖


3. 高斯平滑濾波


4.求得水平和垂直方向灰度圖像的梯度差,使用Sobel算子


5.均值濾波,消除高頻噪聲


6.二值化


7.閉運(yùn)算,填充條形碼間隙


8. 腐蝕,去除孤立的點(diǎn)


9. 膨脹,填充條形碼間空隙,根據(jù)核的大小,有可能需要2~3次膨脹操作


10.通過(guò)findContours找到條形碼區(qū)域的矩形邊界


實(shí)現(xiàn):

#include "core/core.hpp" 
#include "highgui/highgui.hpp" 
#include "imgproc/imgproc.hpp" 
 
using namespace cv; 
 
int main(int argc,char *argv[]) 
{ 
  Mat image,imageGray,imageGuussian; 
  Mat imageSobelX,imageSobelY,imageSobelOut; 
  image=imread(argv[1]); 
 
  //1. 原圖像大小調(diào)整,提高運(yùn)算效率 
  resize(image,image,Size(500,300)); 
  imshow("1.原圖像",image); 
 
  //2. 轉(zhuǎn)化為灰度圖 
  cvtColor(image,imageGray,CV_RGB2GRAY); 
  imshow("2.灰度圖",imageGray); 
 
  //3. 高斯平滑濾波 
  GaussianBlur(imageGray,imageGuussian,Size(3,3),0); 
  imshow("3.高斯平衡濾波",imageGuussian); 
 
  //4.求得水平和垂直方向灰度圖像的梯度差,使用Sobel算子 
  Mat imageX16S,imageY16S; 
  Sobel(imageGuussian,imageX16S,CV_16S,1,0,3,1,0,4); 
  Sobel(imageGuussian,imageY16S,CV_16S,0,1,3,1,0,4); 
  convertScaleAbs(imageX16S,imageSobelX,1,0); 
  convertScaleAbs(imageY16S,imageSobelY,1,0); 
  imageSobelOut=imageSobelX-imageSobelY; 
  imshow("4.X方向梯度",imageSobelX); 
  imshow("4.Y方向梯度",imageSobelY); 
  imshow("4.XY方向梯度差",imageSobelOut);  
 
  //5.均值濾波,消除高頻噪聲 
  blur(imageSobelOut,imageSobelOut,Size(3,3)); 
  imshow("5.均值濾波",imageSobelOut);  
 
  //6.二值化 
  Mat imageSobleOutThreshold; 
  threshold(imageSobelOut,imageSobleOutThreshold,180,255,CV_THRESH_BINARY);   
  imshow("6.二值化",imageSobleOutThreshold); 
 
  //7.閉運(yùn)算,填充條形碼間隙 
  Mat element=getStructuringElement(0,Size(7,7)); 
  morphologyEx(imageSobleOutThreshold,imageSobleOutThreshold,MORPH_CLOSE,element);   
  imshow("7.閉運(yùn)算",imageSobleOutThreshold); 
 
  //8. 腐蝕,去除孤立的點(diǎn) 
  erode(imageSobleOutThreshold,imageSobleOutThreshold,element); 
  imshow("8.腐蝕",imageSobleOutThreshold); 
 
  //9. 膨脹,填充條形碼間空隙,根據(jù)核的大小,有可能需要2~3次膨脹操作 
  dilate(imageSobleOutThreshold,imageSobleOutThreshold,element); 
  dilate(imageSobleOutThreshold,imageSobleOutThreshold,element); 
  dilate(imageSobleOutThreshold,imageSobleOutThreshold,element); 
  imshow("9.膨脹",imageSobleOutThreshold);    
  vector<vector<Point>> contours; 
  vector<Vec4i> hiera; 
 
  //10.通過(guò)findContours找到條形碼區(qū)域的矩形邊界 
  findContours(imageSobleOutThreshold,contours,hiera,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE); 
  for(int i=0;i<contours.size();i++) 
  { 
    Rect rect=boundingRect((Mat)contours[i]); 
    rectangle(image,rect,Scalar(255),2);   
  }   
  imshow("10.找出二維碼矩形區(qū)域",image); 
 
  waitKey(); 
} 

使用另一幅圖片的效果如下:


底部的二維碼左側(cè)邊界定位錯(cuò)位,檢測(cè)發(fā)現(xiàn)在二值化的時(shí)候左側(cè)第二個(gè)條碼部分被歸零了,導(dǎo)致在之后的腐蝕操作中被腐蝕掉了。調(diào)整閾值分界值180到160,重新運(yùn)行正確:


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++ 中 socket編程實(shí)例詳解

    C++ 中 socket編程實(shí)例詳解

    這篇文章主要介紹了C++ 中 socket編程實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Ubuntu配置sublime text 3的c編譯環(huán)境的具體步驟

    Ubuntu配置sublime text 3的c編譯環(huán)境的具體步驟

    下面小編就為大家?guī)?lái)一篇Ubuntu配置sublime text 3的c編譯環(huán)境的具體步驟。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • C語(yǔ)言編程中對(duì)目錄進(jìn)行基本的打開(kāi)關(guān)閉和讀取操作詳解

    C語(yǔ)言編程中對(duì)目錄進(jìn)行基本的打開(kāi)關(guān)閉和讀取操作詳解

    這篇文章主要介紹了C語(yǔ)言編程中對(duì)目錄進(jìn)行基本的打開(kāi)關(guān)閉和讀取操作,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • 解析C++哈夫曼樹(shù)編碼和譯碼的實(shí)現(xiàn)

    解析C++哈夫曼樹(shù)編碼和譯碼的實(shí)現(xiàn)

    本篇文章主要介紹了C++哈夫曼樹(shù)編碼和譯碼的實(shí)現(xiàn),詳細(xì)的講訴了哈夫曼樹(shù)編碼的原理,有需要的同學(xué)可以了解一下。
    2016-11-11
  • C語(yǔ)言實(shí)現(xiàn)的猴子偷桃之類算法

    C語(yǔ)言實(shí)現(xiàn)的猴子偷桃之類算法

    本文給大家分享的是前些日子去面試的時(shí)候的試題,哎,真是沒(méi)想到會(huì)出這么個(gè)題,好多年沒(méi)碰過(guò)C了。。。。分享給大家,小伙伴們過(guò)來(lái)參觀下吧。
    2015-03-03
  • 詳解C++編程中表達(dá)式的語(yǔ)義與計(jì)算順序

    詳解C++編程中表達(dá)式的語(yǔ)義與計(jì)算順序

    這篇文章主要介紹了C++編程中表達(dá)式的語(yǔ)義與計(jì)算順序,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-01-01
  • C語(yǔ)言程序環(huán)境中的預(yù)處理詳解

    C語(yǔ)言程序環(huán)境中的預(yù)處理詳解

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言程序環(huán)境中的預(yù)處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C語(yǔ)言的堆串操作詳解

    C語(yǔ)言的堆串操作詳解

    大家好,本篇文章主要講的是C語(yǔ)言的堆串操作詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • QString的常用方法(小結(jié))

    QString的常用方法(小結(jié))

    這篇文章主要介紹了QString的常用方法(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Qt Designer的簡(jiǎn)單使用方法

    Qt Designer的簡(jiǎn)單使用方法

    用 C++ 代碼編寫圖形界面的問(wèn)題就是不直觀,因此 Qt 項(xiàng)目開(kāi)發(fā)了專門的可視化圖形界面編輯器,本文就詳細(xì)的介紹一下
    2021-08-08

最新評(píng)論

砚山县| 大同县| 聂拉木县| 巴里| 永定县| 体育| 清新县| 成都市| 上林县| 铜鼓县| 阿拉善左旗| 姜堰市| 宣化县| 桐梓县| 辽宁省| 会泽县| 德化县| 会宁县| 郸城县| 张掖市| 巴彦县| 永定县| 常宁市| 荣昌县| 康保县| 甘谷县| 时尚| 杭锦旗| 蕲春县| 锡林浩特市| 遵义县| 宜川县| 镇平县| 长沙市| 玉环县| 利辛县| 军事| 阳朔县| 雷波县| 龙口市| 青铜峡市|