电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強

瀏覽:2日期:2022-07-05 11:13:38

前言

這周和大家分享如何用python識別圖像里的條碼。用到的庫可以是zbar。希望西瓜6辛苦碼的代碼不要被盜了。(zxing的話,我一直沒有裝好,等裝好之后再寫一篇)

具體步驟

前期準備

用opencv去讀取圖片,用pip進行安裝。

pip install opencv-python

所用到的圖片就是這個

詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強

使用pyzbar

windows的安裝方法是

pip install pyzbar

而mac的話,最好用brew來安裝。(有可能直接就好,也有可能很麻煩)裝好之后就是讀取圖片,識別條碼。代碼如下

import cv2import pyzbar.pyzbar as pyzbarimage=cv2.imread('/Users/phoenix/Downloads/barcode.png')gray = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)texts = pyzbar.decode(gray)for text in texts: tt = text.data.decode('utf-8')print(tt)

結果如圖:

詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強

特殊情況處理(條碼圖片矯正和增強)

只以pyzbar舉例

條碼是顛倒的是否會影響識別?

不影響,單純顛倒180度和90度是不會影響識別的。我們把上一個圖的顛倒180度,用顛倒后的圖試一下

詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強

import cv2import pyzbar.pyzbar as pyzbarimport numpy as npimage=cv2.imread('/Users/phoenix/Downloads/barcode_180.png')gray = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)texts = pyzbar.decode(gray)print(texts)if texts==[]: print('未識別成功')else: for text in texts: tt = text.data.decode('utf-8') print('識別成功') print(tt)

結果如圖

詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強

90度的話也是同樣可以成功的。但是其它角度就會GG。

條碼是傾斜的是否會影響識別?

會的,但這種還比較好處理。如圖

詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強

這張圖用上面的代碼就會

詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強

解決的思路是把這個圖片旋轉回來,至于如何判斷轉多少度,可以通過opencv來處理。通過膨脹和腐蝕將其變為如圖。

詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強

接著再用cv2.minAreaRect函數,這個函數會返回如下,

詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強

里面的第三個-45就是我們需要的角度。

綜合起來的實現代碼,我就放在下面了。(我自己寫的,如果有幫到你,快點關注和贊)

import cv2import pyzbar.pyzbar as pyzbarimport numpy as npdef barcode(gray): texts = pyzbar.decode(gray) if texts == []: angle = barcode_angle(gray) if angle < -45: angle = -90 - angle texts = bar(gray, angle) if texts == []: gray = np.uint8(np.clip((1.1 * gray + 10), 0, 255)) angle = barcode_angle(gray) #西瓜6寫的,轉載需聲明 if angle < -45: angle = -90 - angle texts = bar(gray, angle) return textsdef bar(image, angle): gray = image #西瓜6寫的,轉載需聲明 bar = rotate_bound(gray, 0 - angle) roi = cv2.cvtColor(bar, cv2.COLOR_BGR2RGB) texts = pyzbar.decode(roi) return textsdef barcode_angle(image): gray = image #西瓜6寫的,轉載需聲明 ret, binary = cv2.threshold(gray, 220, 255, cv2.THRESH_BINARY_INV) kernel = np.ones((8, 8), np.uint8) dilation = cv2.dilate(binary, kernel, iterations=1) erosion = cv2.erode(dilation, kernel, iterations=1) erosion = cv2.erode(erosion, kernel, iterations=1) erosion = cv2.erode(erosion, kernel, iterations=1) contours, hierarchy = cv2.findContours( erosion, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) if len(contours) == 0: rect = [0, 0, 0] else: rect = cv2.minAreaRect(contours[0]) return rect[2]def rotate_bound(image, angle): (h, w) = image.shape[:2] (cX, cY) = (w // 2, h // 2) M = cv2.getRotationMatrix2D((cX, cY), -angle, 1.0) cos = np.abs(M[0, 0]) sin = np.abs(M[0, 1]) #西瓜6寫的,轉載需聲明 nW = int((h * sin) + (w * cos)) nH = int((h * cos) + (w * sin)) M[0, 2] += (nW / 2) - cX M[1, 2] += (nH / 2) - cY return cv2.warpAffine(image, M, (nW, nH))image=cv2.imread('/Users/phoenix/Downloads/barcode_455.png')gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)texts = barcode(gray)print(texts)if texts==[]: print('未識別成功')else: for text in texts: tt = text.data.decode('utf-8') print('識別成功') print(tt)

條碼是模糊的是否會影響識別?

會的,處理方法就是傳統的調對比度,銳化。。。。不過這個只能解決部分部分,至于有的條碼,微信可以掃,支付寶可以掃,但是我們識別不了,這個也不能怪庫不好,這部分該放棄就放棄吧。

結束語

如果你想用python來解決圖像里的條碼識別問題,這篇文章肯定是可以幫到你的。到此這篇關于詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強的文章就介紹到這了,更多相關python識別圖片條碼內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | CTAB,表面活性剂1631溴型(十六烷基三甲基溴化铵)-上海升纬化工原料有限公司 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 压力变送器-上海武锐自动化设备有限公司 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 自动化改造_智虎机器人_灌装机_贴标机-上海圣起包装机械 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 上海物流公司,上海货运公司,上海物流专线-优骐物流公司 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 挨踢网-大家的导航!| 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 便民信息网_家电维修,家电清洗,开锁换锁,本地家政公司 | ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 江苏南京多语种翻译-专业翻译公司报价-正规商务翻译机构-南京华彦翻译服务有限公司 | 上海噪音治理公司-专业隔音降噪公司-中广通环保 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 精密光学实验平台-红外粉末压片机模具-天津博君 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 超声波乳化机-超声波分散机|仪-超声波萃取仪-超声波均质机-精浩机械|首页 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 陕西自考报名_陕西自学考试网 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 玄米影院| 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 |