python实现二维码、条形码识别
环境:
- python 3.7
- Win7
依赖包安装:
pip install pillow
pip install opencv-python
pip install opencv-contrib-python
pip install numpy
pip instal pyzbar
首先使用cv2打开摄像头进行测试
import numpy as np
import cv2
capture = cv2.VideoCapture(0,cv2.CAP_DSHOW)
capture.set(3,640)
capture.set(4,480)
while True:
# 读取摄像头中的图像,ok为是否读取成功的判断参数
ret,img = capture.read()
cv2.imshow('frame', img)
k = cv2.waitKey(1)
if k == 27: # 'ESC'关闭
break
如果看到屏幕出现一个窗口,上面显示着你的摄像头所拍摄到的画面说明测试成功
然后就直接上代码:
#written by DY
#http://dyblog.tk
#e-mail:duyun888888@qq.com
import cv2
from PIL import Image, ImageDraw, ImageFont
import csv
import pyzbar.pyzbar as pyzbar
import numpy
import time
#-----------------time----------
time1 = (time.strftime("%Y!%m@%d(%H*%M)%S`", time.localtime()))
time2 = time1.replace('!', '年')
time3 = time2.replace('@', '月')
time4 = time3.replace('(', '日')
time5 = time4.replace('*', '时')
time6 = time5.replace(')', '分')
timenow = time6.replace('`', '秒')
#-----------------time done----
barcodeData1 = '' found = set()
capture = cv2.VideoCapture(0,cv2.CAP_DSHOW)
Files = "qrcode+barcode.dat"#新建一个日志,方便查阅(不需要可以删除)
while(1):
ret,frame = capture.read()
test = pyzbar.decode(frame)
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
barcodes = pyzbar.decode(gray)
for barcode in barcodes:
(x, y, w, h) = barcode.rect
cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 255, 0), 2)
barcodeData = barcode.data.decode("utf-8")
barcodeType = barcode.type
if barcodeData=='' or barcodeData!=barcodeData1:
barcodeData1 = barcodeData
#======================可以不需要,这是在图片上进行标注,里面采用了字体文件==============================
img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
font = ImageFont.truetype('arialbd.ttf', 25)#前面是字体文件,后面是字号
fillColor = (0,255,0)
position = (x, y-25)
strl = barcodeData
draw = ImageDraw.Draw(img_PIL)
draw.text(position, strl,font=font,fill=fillColor)
img_PIL.save('Identification_results.jpg','jpeg')#保存一张标记过的图片
#====================================================
print("Recognize result>>> type: {0} content: {1}".format(barcodeType, barcodeData))
else:
pass
if barcodeType not in found or barcodeData not in found:
with open(Files,'a+') as w:
csv_write = csv.writer(w)
date = ['类型:'+barcodeType+' 识别结果:'+barcodeData+' 时间:'+timenow]
csv_write.writerow(date)
found.add(barcodeData)
cv2.imshow('qrcode+barcode',frame)
k = cv2.waitKey(1)
if k == 27:
break
#written by DY
#http://dyblog.tk
#e-mail:duyun888888@qq.com
效果如图所示:


python实现二维码、条形码识别的更多相关文章
- iOS- 详解如何使用ZBarSDK集成扫描二维码/条形码,点我!
1.前言 目前市场主流APP里,二维码/条形码集成主要分两种表现形式来集成: a. 一种是调用手机摄像头并打开系统照相机全屏去拍摄 b. 一种是自定义照相机视图的frame,自己控制并添加相关扫码指南 ...
- 有关python下二维码识别用法及识别率对比分析
最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...
- 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码
接着昨天的需求,不过这次不依赖微信,使用纯js唤醒手机本地摄像头或者选择手机相册图片,识别其中的二维码或者是条形码.昨天,我使用微信扫一扫识别,效果超棒的.不过如果依赖微信的话,又怎么实现呢,这里介绍 ...
- Python 实现二维码生成和识别
今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...
- 基于opencv+python的二维码识别
花了2天时间终于把二维码识别做出来了,不过效果一般,后面会应用在ROS辅助定位上,废话少说先上图: 具体过程参考了这位大神的博客:http://blog.csdn.net/qq_25491201/ar ...
- Java使用ZXing生成二维码条形码
一.下载Zxingjar包 本实例使用的是 zxing3.2.0的版本 下载地址 http://pan.baidu.com/s/1gdH7PzP 说明:本实例使用的3.2.0版本已经使用的java7 ...
- 【PYTHON】二维码生成
二维码是什么? 二维码从一维码扩展而来,增加另一维具有可读性的条码,用黑白矩形图形表示二进制数据,被设备扫描后获取其中包含的信息,二维码的长度.宽度均记载着数据,二维码具有定位点和容错机制,即便没有辨 ...
- 使用 Python 生成二维码
在“一带一路”国际合作高峰论坛举行期间, 20 国青年投票选出中国的“新四大发明”:高铁.扫码支付.共享单车和网购.其中扫码支付指手机通过扫描二维码跳转到支付页面,再进行付款.这种新的支付方式,造就二 ...
- 使用IOS7原生API进行二维码条形码的扫描
使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析 ...
- C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)
1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...
随机推荐
- 网络编程-Netty-Reactor模型
目录 # 摘要 高性能服务器 Reactor模式 Reactor单线程模型设计 Reactor多线程模型设计 主从Reactor多线程模型设计 Netty Reactor模型设计 参考 你的鼓励也是我 ...
- 什么?你还不会身份证号码验证?最全的身份证正则验证js
话不多说上代码 //身份证号合法性验证 //支持15位和18位身份证号 //支持地址编码.出生日期.校验位验证 function cidInfo(code) { var city={11:" ...
- Thread基础-创建线程的方式
Java线程创建的几种简单方式 1. extends Thread类 public class ThreadDemo extends Thread{ @Override public void run ...
- 入门springMVC
前言 开始学习springMVC整理的笔记,今天这一篇是回顾第一个springMVC程序. 环境 大致文件结构 先是要创建好一个普通maven工程,加入一些servlet包以及mvc支持的jar包,如 ...
- (三)利用@DataProvider传递参数
具体实现如下: @DataProvider(name="couponListData") public Object[][] couponListData(){ //自己定义Obj ...
- sourcetree 安装破解注册方法
1.下载sourcetree安装包 2.点击安装到下图步骤 3.在网盘中下载accounts.json 文件,( 链接:https://pan.baidu.com/s/1tJd_xCh-B-oOwd ...
- 安装allure测试报告
必须安装jdk1.8,配置环境变量 一.环境准备 Windows10 jdk-9.0.1 二.下载并安装JDK 到Java的官网下载JDK安装包,地址:http://www.oracle.com/te ...
- Eclipse设置断点无效、无法拦截请求进行Debug调试
场景: 在Eclipse中添加Debug断点,从后台页面中点击修改按钮提交数据,发现打断点的地方并没有拦截到请求,接下来对此情况的进行分析. 分析: * 如果页面是根据业务需求复制别的相似html页面 ...
- 【Java】错误: 需要class, interface或enum
今天在用cmd实现mvn package操作时跳出来的报错! 网上搜索到的结论是因为编码问题而产生的,具体原因就不深究了 要详细了解可以查看以下链接https://blog.csdn.net/qq_3 ...
- IDEA中Maven依赖报红处理
一般依赖报红有以下几种原因: 1.setting.xml没有配置好(要配置自行百度) 2.IDEA配置的Local respository和User settings file路径没写对(不要说不会写 ...