目录

制作简易的二维码:

识别二维码和条形码:

相关库:

decode函数解码:

准确圈出二维码的位置:

cv2.polylines():

cv2.putText():

判断二维码是否授权:

使用图片进行识别的完整代码:

使用摄像头实时识别完整代码:


以下所有代码在识别条形码处也适用。

制作简易的二维码:

如果已经有二维码的可以跳过这一步。

使用的是办公软件excel实现。但这里只能做英文和数字类型的。

1、在任意单元格内输入内容。这里是在A40处输入内容“168Qr”。

2、选项卡里找到开发工具---插入---点击ActiveX控件的最右下角。

3、弹出的窗口内,往下滑动选择Microsoft BarCode Control 16.0后,点击确定。

4、在任意区域,摁住鼠标左键不放,拖动鼠标,画出合适大小的矩形,松开鼠标,即可获得一个条形码。

5、右击条形码,选择属性,点击自定义右边“...”,弹窗内的样式,选择最后一个“11 - QR Code”,点击确定。

6、回到这里的属性,找到"LinledCell",输入前面有内容的单元格位置,这里输入的是“A40”。结束后,点击右上角关闭。

手机扫一扫即可。

识别二维码和条形码:

软件:pycharm    解释器:python 3.7

相关库:

import cv2         # opencv-python==4.2.0.34
import numpy as np     # numpy==1.21.6
from pyzbar.pyzbar import decode

decode函数解码:

使用decode函数对二维码的图片进行解码,会看到结果会出现以下一些参数。其中,data代表二维码的内容;type代表是条形码还是二维码类型;rect代表二维码轮廓的信息;polygon二维码轮廓的位置,从左上角逆时针旋转。

img = cv2.imread('2.png')
result = decode(img)
print(result)

[Decoded(data=b'168Qr', type='QRCODE', rect=Rect(left=91, top=84, width=174, height=162), polygon=[Point(x=91, y=84), Point(x=91, y=246), Point(x=265, y=245), Point(x=265, y=84)], quality=1, orientation='UP')]

利用循环分别获取解码出来的信息:

for barCode in result:print(barCode.data)print(barCode.rect)print(barCode.polygon)

结果:

发现会出现“ b'168Qr' ”,b代表它是以字节为单位。想要去掉这个“b”,那么需要进行解码。

for barCode in result:print(barCode.data)myData = barCode.data.decode('utf-8')print(myData)

结果:解码成功

准确圈出二维码的位置:

解码结束后,在图片上显示出二维码的位置和二维码的内容。

根据解码后的polygon返回值,框出二维码。

for barCode in result:myData = barCode.data.decode('utf-8')pts = np.array([barCode.polygon], np.int32)     # 创建一个int32数据类型的二维码轮廓数组pts = pts.reshape((-1, 1, 2))        # 自适应维度大小cv2.polylines(img, [pts], True, (255, 0, 255), 5)

cv2.polylines():

  • cv2.polylines(img,  pts, isClosed, color, thickness)
  • 其中,pts: 折线顶点数组;isClosed:是否是闭合折线(多边形)

根据解码后的rect返回值,确定二维码内容放置的位置。

pts2 = barCode.rect
cv2.putText(img, myData, (pts2[0], pts2[1]), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 255), 2)

cv2.putText():

cv.putText(img, text, org, fontFace,fontScale,color[, thickness[, lineType[, bottomLeftOrigin]]])

其中,参数依次为:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细

判断二维码是否授权:

先在当前文件夹内创建一个文本文件,里面输入一些授权的二维码内容。

比如:

然后在解码的py文件下,读取这个文本文件的内容:

with open('myDataList.txt') as f:myDataList = f.read().splitlines()print(myDataList)

结果:

接着,根据二维码的内容来判断是否授权。如果二维码的内容在这个文本文件内,那么输出“Authorized”,而且框二维码的线条为绿色;如果二维码的内容不在这个文本文件内,那么输出“Un-Authorized”,而且框二维码的线条为红色。

使用图片进行识别的完整代码:

import cv2
import numpy as np
from pyzbar.pyzbar import decodeimg = cv2.imread('8.png')
result = decode(img)with open('myDataList.txt') as f:myDataList = f.read().splitlines()print(myDataList)for barCode in result:myData = barCode.data.decode('utf-8')if myData in myDataList:myOutPut = "Authorized"myColor = (0, 255, 0)else:myOutPut = "Un-Authorized"myColor = (0, 0, 255)pts = np.array([barCode.polygon], np.int32)     # 创建一个int32数据类型的二维码轮廓数组pts = pts.reshape((-1, 1, 2))        # 自适应维度大小cv2.polylines(img, [pts], True, myColor, 5)pts2 = barCode.rectcv2.putText(img, myData, (pts2[0], pts2[1]), cv2.FONT_HERSHEY_SIMPLEX, 0.9, myColor, 2)cv2.imshow('22', img)
cv2.waitKey(0)

使用摄像头实时识别完整代码:

import cv2
import numpy as np
from pyzbar.pyzbar import decode# 导入摄像头
cap = cv2.VideoCapture(0)
cap.set(3, 320) #摄像头的宽度
cap.set(4, 320) #摄像头的高度
cap.set(10, 100) #摄像头的亮度with open('myDataList.txt') as f:myDataList = f.read().splitlines()while True:success, img = cap.read()for barcode in decode(img):myData = barcode.data.decode('utf-8')print(myData)if myData in myDataList:myOutPut = "Authorized"myColor = (0, 255, 0)else:myOutPut = "Un-Authorized"myColor = (0, 0, 255)pts = np.array([barcode.polygon], np.int32)pts = pts.reshape((-1, 1, 2))cv2.polylines(img, [pts], True, myColor, 5)pts2 = barcode.rectcv2.putText(img, myOutPut, (pts2[0], pts2[1]), cv2.FONT_HERSHEY_SIMPLEX, 0.9, myColor, 2)cv2.imshow("Result",img)if cv2.waitKey(1) & 0xFF == ord('q'):break

opencv实战---检测二维码和条形码相关推荐

  1. python3 + opencv +pyzbar实时检测二维码 / 定位二维码,并绘制出二维码的框和提取二维码内容

    python3 + opencv +pyzbar实时检测二维码 / 定位二维码,并绘制出二维码的框和提取二维码内容 1 pyzbar二维码检测模块 1.1. pyzbar模块介绍 1.2 pyzbar ...

  2. opencv项目7---智能识别二维码和条形码

    利用opencv和一个摄像头设备即可实现智能识别二维码和条形码,用到的都是基础的opencv知识. 二维码和条形码的照片可以去网上自行搜索. 这个项目可以有很多扩展: 1:比如做成一个公司的二维码证件 ...

  3. 二维码及条形码智能检测软件(Python+YOLOv5深度学习模型+清新界面)

    摘要:二维码及条形码智能检测软件用于检测常用条形码和二维码,对其位置进行精确定位.记录并显示检测结果,辅助识别算法定位条形码或二维码.本文详细介绍二维码及条形码智能检测软件,在介绍算法原理的同时,给出 ...

  4. 【opencv有趣应用】二维码和条形码的检测

    今天学习下使用opencv进行条形码和二维码的检测 import cv2 import numpy as np from pyzbar.pyzbar import decodedef cv_show_ ...

  5. OpenCV(项目)二维码识别(二维码、条形码)

    目录 过程 1.获取图片中的二维码信息 2.获取视频中的二维码信息 3.检测出二维码框 4.显示数据 5.添加数据,判断二维码是否授权 5-1:.添加数据 5-2.读取文件信息,放入数组 5-3.判断 ...

  6. 基于OpenCV的二维码和条形码识别

    你好啊 今天我们来学习利用OpenCV识别二维码和条形码,首先我们需要准备一个二维码,我准备个两个 接下来我们需要下载几个包,numpy,opencv,和pyzbar(这个工具包可以识别二维码,条形码 ...

  7. OpenCV+Zbar二维码及条形码识别

    OpenCV搭配Zbar进行二维码及条形码识别 先上代码 #include<Windows.h> #include <iostream> #include<zbar.h& ...

  8. flutter开发实战-flutter二维码条形码扫一扫功能实现

    flutter开发实战-flutter二维码条形码扫一扫功能实现 flutter开发实战-flutter二维码扫一扫功能实现,要使用到摄像头的原生的功能,使用的是插件:scan 效果图如下 一.扫一扫 ...

  9. OpenCV 检测二维码并定位

    注意:该程序功能是检测二维码,不是识别,只是在图中定出二维码的位置即可 原图是这样:如果出现这张图片时,程序需要找到二维码 其余图片是这样: 程序步骤: 1.图片缩小 2.灰度化,直方图均衡化,对比度 ...

最新文章

  1. 使用 Kanban精益创新
  2. 本人常用的一些编码小Tips(虽然不多,但很好用)
  3. 软件缘-网友个人精心打造的精品软件收集
  4. LintCode 802. 数独(回溯)/ LeetCode 37. 解数独
  5. Ubuntu工具zsh和Byobu
  6. Tomcat 报错 java.net.connectexception:拒绝连接 解决办法
  7. 【华为云技术分享】一文掌握5种常用的机器学习模型及其优缺点
  8. ie6,ie7兼容性总结
  9. 论文简述 | PL-VINS:具有点和线特征的实时单目视觉惯性SLAM
  10. Java制作数独小游戏
  11. 优酷的kux格式怎么转换成mp4?教你快速转换的方法
  12. 经纬度相关公式及实现
  13. centos 安装安全狗
  14. WebBrowser 怎么样可以不保存SESSION?急!!!!!!!!!!!!
  15. 《树莓派实战秘籍》——1.18 技巧18在移动中给Pi供电
  16. 前端实习——微信小程序(2)
  17. 计算机 调 应用统计,山东工商学院统计学院2020年应用统计专硕调剂信息
  18. 那些年,在MSRA实习过的女孩,现在都怎么样了?
  19. ADSL密码 不完全收集
  20. 密码学中的同态加密算法,保证数据的安全,你了解吗?

热门文章

  1. 【Maven】官网下载指定版本Maven的方式
  2. U盘强制拔出丢失数据的恢复方法(U盘写保护的四种解决方法)
  3. Java学习之App开发公司手机端设想
  4. 第二周学习python总结
  5. kmem_cache的alias问题导致lvm在线扩容crash问题分析
  6. 青岛胶南中专计算机专业,胶南职业中专官网
  7. 数字化转型中的架构设计01:架构方法
  8. java实现通过绑定邮箱找回密码功能_SpringMVC通过邮件找回密码功能的实现
  9. 自己动手DIY macos下的绘图软件Pencil之原生菜单
  10. [Photo] 岳麓·湖大