这篇博客实现的是“Python实现识别多个条码/二维码(一)”未完成的解码任务。由于系统坏了,软件重装等一系列原因,所以拖到现在。。不好意思哈。

在上一篇中我们已经能把两个条形码找出并框起来了,接下来就是要解码。先上代码吧。

from sys import exit
from Image import _ImageCrop
from PIL import Image
import numpy as np
import zbar
import cv2# 加载图片并把它转换为灰度图片
image = cv2.imread('F:/work/barcode/bar_code/20.jpg')
img = Image.open(r'F:/work/barcode/bar_code/20.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)#cv2.imshow("sobel_Image", gray)
#cv2.waitKey(0)
#使用Canny做边缘检测
gradient = cv2.Canny(gray , 20 ,520)
#cv2.imshow("Canny_Image", gradient)
#cv2.waitKey(0)(_, thresh) = cv2.threshold(gradient, 225, 255, cv2.THRESH_BINARY) # 二值化
cv2.imshow("threshold_Image", thresh)
#cv2.waitKey(0)
# 构建kernel然后应用到 thresholded 图像上
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 5))#形态学处理,定义矩形结构
closed = cv2.dilate(thresh, kernel, iterations = 1)#膨胀图像,连接断点
#cv2.imshow("dilate_Image", closed)
#cv2.waitKey(0)im, contours, hierarchy = cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
#print contours
x = len(contours)
a = []
s = []#打印面积
for i in range(0,x):s.append(cv2.contourArea(contours[i]))#保留面积大于8000的轮廓
for m in range(0,x):if s[m] >= 8000 and s[m] <= 25000 :a.append(s[m])else:continuez = max(a)#for j in a:
#    print "a was : %f",jfor k in range(0,x):#增加一些筛选条件if s[k] >= 8000 and s[k] <= 25000 and ((z - s[k]) <= 8500 ) :rect = cv2.minAreaRect(contours[k])#返回矩形的中心点坐标,长宽,旋转角度box = np.int0(cv2.boxPoints(rect))cv2.drawContours(image, [box], -1, (255, 0, 0), 2)#画一个方框把条形码区域圈起来u,v,w,t = cv2.boundingRect(contours[k]) #获取轮廓坐标#print u,v,w,t#根据坐标把条码裁剪下来并保存o = (u,v,u+w,v+t)barcode = img.crop(o)barcode.save(r'F:/work/barcode/bar_code/crop4.jpg')#print "s : %f",s[k]#构建解码器scanner = zbar.ImageScanner()scanner.parse_config('enable')pil = Image.open('F:/work/barcode/bar_code/crop4.jpg').convert('L')width, height = pil.size#解码raw = pil.tostring()image0 = zbar.Image(width, height, 'Y800', raw)scanner.scan(image0)for symbol in image0:print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.dataelse:continuecv2.imshow("Image", image)
cv2.waitKey(0)
exit(0)

找条码的程序与前文基本相同。解码的实现从获取轮廓坐标开始。其实就是我们把条码从原图上裁剪下来(这里先保存后打开是因为CV2与PIL的交替使用),然后用zabr工具包进行解码。

下面放上结果图

有朋友问我zbar的安装,确实不好找哈,所以这里放上链接~

密码:bhx6

Python实现识别多个条码/二维码(二)相关推荐

  1. python之有趣的二维码-----二维码表白记

    " 如何使用二维码进行表白-一键制作二维码" 二维码在我们现在生活中随处可见,因为一次突发奇想,那我们可不可以制作一个自己的二维码呢!然后让女朋友去扫描一下----嘿嘿嘿--不行, ...

  2. 分享6:绘制二维码/二维条码(java版)

    最近客户抽筋了,不想要我们现有的二维码,转而采用二维条码.(这之前二维码也不是我做的)既然是甲方bb提出的,老板又安排到到我手上了,那么我就得心(一)甘(脸)情(苦)愿(逼)的默默解决呗. 二维码/二 ...

  3. PHP批量生成底部带编号二维码(二维码生成+文字生成图片+图片拼接合并)

    PHP批量生成带底部编号二维码(二维码生成+文字生成图片+图片拼接合并) 需求: 输入编号如 : cb05-0000001  至 cb05-0000500 批量生成 以编号为名称的下图二维码,然后压缩 ...

  4. Swift开发小技巧--扫描二维码,二维码的描边与锁定,设置扫描范围,二维码的生成(高清,无码,你懂得!)...

    二维码的扫描,二维码的锁定与描边,二维码的扫描范围,二维码的生成(高清,无码,你懂得!),识别相册中的二维码 扫描二维码用到的三个重要对象的关系,如图: 1.懒加载各种类 // MARK: - 懒加载 ...

  5. 灵猫二维码 - 二维码中间加图片的方法

    正常生成的二维码都是不带图标的,但是很多时候我们都需要在二维码中间添加上我们自己的图标,这个时候我们就可以使用灵猫二维码来进行操作了! 使用教程: 1.打开灵猫二维码:http://lmewm.mai ...

  6. vue 在线生成二维码 二维码生成背景下载

    安装 引用 3.注入 app.vue 这里只是生成二维码 生成二维码 js 这里是需要二维码 并且与另一张合成一张image的! 上代码

  7. 基于ZBar,OpenCV和Python的二维码识别

    0 前言 今天分享一个之前做过的二维码识别,参考:https://www.pyimagesearch.com/2018/05/21/an-opencv-barcode-and-qr-code-scan ...

  8. 如何使用Python识别图片中的二维码

    如何使用Python识别图片中的二维码 二维码是一种方便快捷的信息传递方式,它们广泛应用于电子商务.广告和其他领域.在许多情况下,我们需要识别图片中的二维码,以便从中获取信息.Python是一种流行的 ...

  9. 互联网 4 大发明之二维码,你如何使用 Python 生成二维码?

    阅读文本大概需要 8 分钟. 新时代,人们有人信新的追求,自然而然会有新发明的诞生.去年,在"一带一路"国际合作高峰论坛举行期间, 20 国青年投票选出中国的"新四大发明 ...

  10. 讲解开源项目:用 Python 生成有“灵魂”的二维码

    本文作者:HelloGitHub-LITTLECHIEH 这是 HelloGitHub 推出的<讲解开源项目>系列,今天给大家推荐一个 Python 开源生成二维码的项目--qrcode ...

最新文章

  1. 3详细参数_【前沿】一加7Pro拍照详细参数曝光 3倍光变30W快充
  2. 每天CookBook之JavaScript-016
  3. java 获取键盘输入法_Java中接收键盘输入的三种方法
  4. 多系统服务器数据备份软件,护卫神好备份系统
  5. spring组键扫描
  6. Node.js 把抓取到的电影节目列表单发或者群发到QQ邮箱
  7. linux中网卡的流量怎么通过c语言获取_用Python获取计算机网卡信息
  8. 可扩展的Web架构和分布式系统
  9. 1.oracle dblink(数据库不同实例数据对导)
  10. 测试网速wifi软件,测网速工具 一键wifi测速
  11. 国内IoT云平台横向对比
  12. 软件测试面试宝典【测试流程、数据库、Linux、测试工具、自动化、性能测试】
  13. 央行最新公布2019支付牌照持牌机构公司列表,共255家(附清单)
  14. 分享5个高质无损音乐网站,歌曲很丰富,爱听歌的小伙伴有耳福了
  15. 利用公网ip盒子搭建自己的kod云资源管理器
  16. 7天带你搞定一个图表框架echarts(七)
  17. 对公账户:企业银行结算账户
  18. 可视化系列讲解:css3D:如何绘制正方体,长方体等
  19. C# dll注入(指定进程注入指定dll)
  20. istio 实战 六 全链路监控 - Jaeger

热门文章

  1. java鼠标点击事件_Java 鼠标点击事件实例
  2. 意念机Umind及其控制无人机
  3. java数据库中间件实现,分布式数据库中间件DDM的实现原理
  4. spring boot通过微信扫码登录
  5. 如何删除.nfs00000xxxx文件
  6. 全新MXone Pro自适应苹果CMSV10影视模板/亲测
  7. 【金猿案例展】中新天津生态城——智慧城市产业大脑系统建设
  8. SaaS 云服务部署的3种形式:灵活选择,效益最优调控
  9. MinIO按前缀批量下载文件到本地
  10. 小时候经常和爸爸讨论的数学烧脑题---幻方