Python实现识别多个条码/二维码(二)

Python实现(条形码,二维码)生成与识别 Python 条形码,二维码生成与识别 阅读详情

    这篇博客实现的是“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:
        continue
        
z = max(a)

#for j in a:
#    print "a was : %f",j

for 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.data
    else:
        continue

cv2.imshow("Image", image)
cv2.waitKey(0)
exit(0)

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

    下面放上结果图

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

密码:bhx6

 

树莓派python实现二维码识别——ZBar 在本文中,采用树莓派进行二维码识别,支持中英文的二维码或者一维条码的识别。硬件由树莓派3Bplus和usb摄像头组成,软件由python、二维码识别开源工具zbar和opencv组成。通过本文,可以学习如何正确快速安装zbar及快速上手zbar二维码识别,同时可采用opencv对二维码快速定位,实现二维码的快速扫描和解码。 阅读详情

相关推荐

python如何实现二维码的生成和识别

一、什么是二维码 维条码/二维码 (2-dimensional bar code) 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的文字内链_点击实体词" target="_blank">几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校

xieminglu的博客 3167

用python识别条形码,二维码并且定位标注

原理很简单用OpenCV处理图片pyzbar识别条形码 python里面有一个包pyzbar可以用识别二维码和条形码,我们再结合OpenCV处理图片的功能就可以标注出二维码位置内容 我们生活中的常见的带有二维码和条形码的图片如下图 需要导的包有 import pyzbar.pyzbar as pyzbar import numpy from PIL import Im...

qq_42556555的博客 1万+

python 读取条形码以及二维码

在上面的代码中,我们首先导入了create_qrcode函数,然后定义了一个要生成二维码的字符串。pyzbar库是一个基于Python的二维码生成和识别库,它提供了丰富的API和工具,方便用户快速实现二维码生成和识别功能。要使用pyzbar识别二维码,需要使用pyzbar.pyzbar模块中的decode函数。该函数接受一个图像参数,用于识别其中的所有码,并且用绿色框框框出来,然后重新保存图片。要使用pyzbar生成二维码,需要使用pyzbar.pyzbar模块中的create_qrcode函数。

baidu_24083705的博客 2421

python 识别二维码/条形码

python 识别二维码/条形码 1. 安装包 pip install -y pillow -i https://mirrors.aliyun.com/pypi/simple/ pip install -y pyzbar -i https://mirrors.aliyun.com/pypi/simple/ 2. 使用 from PIL import Image # 如果导入报错,安装工具: apt install -y zbar-tools from pyzbar.pyzbar import deco

yyl的博客 1839

python学习——二维码生成和识别

二维码知识 不知从什么时候起,二维码就充满了我们生活。吃饭时扫描二维码,去商场购物时扫描二维码,就连去买根葱都要扫码。但是可能很多人都不了解二维码的一些知识,下面我会向大家普及一下,然后用python去实现二维码的生成和识别。 在介绍二维码原理之前,先说下条形码 。条形码我们都见过,就是超市收银员结账的时候扫的那个东西。它是一种“一维码”,竖直方向,条码是均匀的,信息只能在水平方向上存储,并且只能...

weixin_42365428的博客 3286

树莓派利用OpenCV的图像跟踪、人脸识别等

树莓派安装openCV做图像识别跟踪

woshigaowei5146的博客 1万+

Python二维码应用(一)QRcode二维码生成&识别

基于Python的二维码实验一、机器视觉之QRcode二、基于Python的QRcodetest(一)配置环境(二)生成自己的二维码(三)识别二维码三、调用opencv库摄像头识别图像 一、机器视觉之QRcode 问:什么是QRcode呢? 答:二维码,二维码结构图: 问:主要运用qrcode库文件、这是个什么东东呢? 答:这里给一篇博客有详细叙述:Python生成二维码 开源库impo...

cungudafa的博客 9万+

opencv-python识别二维码并判断内容

然后,使用`pyzbar.decode`函数识别图中的二维码。在`decodeDisplay`函数中,第一步是将图像转换成灰度图(`cv2.cvtColor(video, cv2.COLOR_BGR2GRAY)`),因为灰度图处理起来更快,而且对于条码和二维码识别来说是足够的。- 函数`detect`:此函数初始化摄像头,并不断读取摄像头的帧,对每一帧调用`decodeDisplay`函数进行处理。- 导入库:首先,我们导入必要的库,包括`cv2`(OpenCV)和`pyzbar.pyzbar`。

realman_Rop的博客 2438

利用Opencv+Python 实现二维码识别

准备工作: 二维码图片,我这里直接打印在了一张A4纸上,或者直接在草料网站上生成 草料二维码生成器,存放在手机上进行显示。在安装条码扫描库的时候大家注意:zbar库只针对 python2 版本有支持,python3已经不再支持。课程中使用的是python3,所以我们只能安装 pyzbar,安装命令如下: pip3 install pyzbar 实现目标 利用摄像头识别二维码中的内容并打印出来,...

huang714的专栏 5577

学习OpenCV——对图像中的多个条形码进行定位

最近搞了搞条码识别相关的东西,今天总结一下。 我们常用的条码识别工具有zxing、zbar等等。zxing的使用比较简单,一个函数直接调用就可以了,但是目前我发现它只能识别一张图中的一个条码,如果你要读多个条码那是不行的。这里贴一下使用方法: Bitmap code_bmp = roi.ToBitmap(); BarcodeReader reader = new BarcodeReader(...

weixin_42465713的博客 6519

Python条码识别:使用Python进行条形码识别的详细教程

以上代码通过导入zbar库和Pillow库(Pillow是Python中一个强大的图像处理库),首先定义一个decode函数来进行条形码的读取和解码。最后,我们打印出检测到的所有条码信息。在Python中,我们可以通过pip安装zbar库,然后使用Python代码实现条形码的读取与解码。对于条形码的识别,在Python中,有许多开源库可以使用,例如Zbar、zxing等。总结起来,使用Python进行条形码识别,只需要安装zbar和Pillow库,在代码中调用zbar库的接口实现条形码的读取和解码即可。

. 4162

Python实现识别多个条码/二维码(一)

        对于条码的识别程序,网上有很多,不过很多都是只识别一个,并且此处的“识别”指的是找出图片中的条码,并没有对条码进行译码。本篇博客将先实现第一个功能,即,找出图中的多个条码。下篇博客会实现第二个功能,即,对找出的条码进行译码。下面看代码: from sys import exit import numpy as np import cv2   # 加载图片并把它转换为灰度图片 ima...

TIME_LEAF的博客 1万+

条形码识别程序

基于膨胀腐蚀,可以识别横向或纵向的条形码,配合矩形图标注出来。

Python识别二维码的两种方法

人生苦短,快学Python!大家好,我是朱小五最近在搜寻资料时,发现了一则10年前的新闻:二维码将成线上线下关键入口。从今天的移动互联网来看,支付收款码/健康码等等与我们息息相关,二维码确实成为了我们生活中不可或缺的一部分。在学习Python处理二维码的过程中,我们看到的大多是“用python生成酷炫二维码”、“用Python制作动图二维码”之类的文章。而关于使用Python批量识别二维码的教程,并不多见。所以今天我会给大家分享两种批量识别二维码的Python技巧!二维码又称二维条码,常见的二维码为QR C

zhuxiao5的博客 1万+

基于Python的MGWR多尺度地理加权回归模型

多尺度地理加权回归(MGWR)变量之间的关系在地理空间上不是均一的,所有特征变量的影响都在不同的空间范围(带宽)内变化,某些变量可能表现出局部性影响(小带宽),某些变量可能表现出全局性影响(大带宽),通过优化每个特征变量的带宽,捕捉到空间关系的多尺度特性,得到更细致的模型解释。

weixin_61965078的博客 3852

EMQX 结合MySQL实现精细化ACL权限管理实战

本文详细介绍了如何通过EMQX结合MySQL实现精细化的ACL权限管理,提升物联网设备接入和消息传输的安全性。内容包括环境准备、基础配置、权限规则设计技巧以及高级应用与性能优化方案,帮助开发者快速掌握动态生效、便于管理的权限控制方法。

weixin_28683689的博客 196

OpenCV基础(25)条码和二维码扫的生成与识别

在这篇文章中,我们将使用名为pystrich的库实现标准条形码的生成,使用ZBar 和 OpenCV 的库实现条形码和二维码的识别。 1.条形码与二维码的生成 1.1 ean13标准条形码 from pystrich.ean13 import EAN13Encoder # pip install pystrich encode = EAN13Encoder('123202123123') encode.save('pystrich.png') # pip install python-barcode f

weixin_43229348的博客 2828

我看MFC的过去、现在和未来

首先说句题外话,虽然我现在的“主业”是Qt,但自己扪心自问,对MFC的熟悉程度要超过Qt。正是由于有了对MFC的熟悉,才能在使用Qt时,比较清醒的认清两者的优劣之处,在此暂且不提。 这个话题也可以说是由来已久,众说纷纭,今时我也谈谈自己的感悟。 一、对MFC的总体看法 首先看看云风在其《游戏之旅-我的编程感悟》一书中对MFC的看法: “我所见到的程序员中,很多把C+

qter_wd007的专栏 6115

python解析二维码_Python如何识别二维码

最近呢,知乎发表了一个报告说,安全防护系统全面升级了(是小管家说的)。现在内容中的二维码会被自动替换为相应的链接,并缀以“(二维码自动识别)”字样。今天就来看,如何用Python自动识别二维码。01. 编码首先要熟悉一套理论:什么是二维码?条形码我们都见过,这就是一种“一维码”。竖直方向上,条码是均匀的,长短也不影响,信息只在水平方向上存储。二维码的信息则在整个平面上存储,当下常见的二维码叫QR码...

weixin_39670627的博客 1996

为什么大语言模型推理要分成 Prefill 和 Decode?深入理解这两个阶段的真正意义

Prefill 阶段是语言模型推理中的第一个步骤,它负责处理你输入的所有上下文内容(prompt),为后续生成打下基础。“请解释一下 Transformer 的原理。这句话会被 tokenizer 编码为一串 token,比如["请", "解释", "一下", "Trans", "##former", "的", "原理", "。"]。然后这些 token 会进入 Transformer 模型进行前向传播。重点来了 👇。

Harry的博客 1万+

位置点位到达判断FC(Easy+Codesys+博途平台)

IN rActPositon REAL 轴当前实际位置 1IN arAbsPosition REAL[10] 各工作点位坐标 2IN rDeadZone REAL 位置达到判断域值 范围 3OUT abInAbsPos BOOL[10] 到达各绝对定位点位标志 位置到达输出 4VAR i INT 循环计数 5VAR rErr REAL 位置偏差 6。

RXXW_Dor的博客 535

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

0 前言 今天分享一个之前做过的二维码识别,参考:https://www.pyimagesearch.com/2018/05/21/an-opencv-barcode-and-qr-code-scanner-with-zbar/ 上面那个只有Python版本,再推荐一个C++版本的: https://www.learnopencv.com/opencv-qr-code-scanner-c-and-...

W_Tortoise的博客 6664

华为OD机试 - 报文响应时间 - 贪心算法、位运算(Python/JS/C/C++ 2024 E卷 200分)

贪心算法是在每一步选择中都做出当前最优的选择,期望通过局部最优解推导出全局最优解的算法。

学Java,找哪吒 1757
上一篇: Window上,Matlab安装libsvm,libsvmtrain.mexw64无效,mex-setup 失败
下一篇: 解决“TypeError: 'int' object is not callable”
Linux在秋名山
博客等级 码龄9年 225粉丝 53原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux在秋名山

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值