利用Opencv+Python 实现二维码识别
2024-10-21 03:20:33
pip3 install pyzbar
准备工作:
二维码图片,我这里直接打印在了一张A4纸上,或者直接在草料网站上生成 草料二维码生成器,存放在手机上进行显示。在安装条码扫描库的时候大家注意:zbar库只针对 python2 版本有支持,python3已经不再支持。课程中使用的是python3,所以我们只能安装 pyzbar,安装命令如下: pip3 install pyzbar
实现目标
利用摄像头识别二维码中的内容并打印出来,同时兼容识别条形码内容
打开pycharm开发工具,在项目中新建 code.py 文件,文件代码如下: # -*- coding:utf-8 –*-
import cv2
import pyzbar.pyzbar as pyzbar def decodeDisplay(video):
# 转为灰度图像
gray = cv2.cvtColor(video, cv2.COLOR_BGR2GRAY)
barcodes = pyzbar.decode(gray)
for barcode in barcodes:
# 提取二维码的位置,然后用边框标识出来在视频中
(x, y, w, h) = barcode.rect
cv2.rectangle(video, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 字符串转换
barcodeData = barcode.data.decode("utf-8")
barcodeType = barcode.type
# 在图像上面显示识别出来的内容
text = "{}".format(barcodeData)
cv2.putText(video, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,1, (0, 255, 0), 2)
# 打印识别后的内容
print("[扫描结果] 二维码类别: {0} 内容: {1}".format(barcodeType, barcodeData))
cv2.imshow("cam", video) def detect():
cv2.namedWindow("cam",cv2.WINDOW_NORMAL)
cam = cv2.VideoCapture(0)
while True:
# 读取当前帧
ret, frame = cam.read()
decodeDisplay(frame)
# 按ESC键退出
if(cv2.waitKey(5)==27):
break
cam.release()
cv2.destroyAllWindows() if __name__ == '__main__':
detect()
最新文章
- 解决ubuntu下安装phpmyadmin访问不了的问题
- mac:ssh登陆总是需要输入钥匙串密码解决
- PHP学习笔记--文件目录操作(文件上传实例)
- 站点下的GridView的RowCommand事件的设置,与站点应用不一样
- php批量发送短信或邮件的方案
- The Derivation About CNN and Antoencoder
- F, A, MS, QM, RF的OFFER和经历 -- Final update
- Android 圆形背景shape定义
- Spinner样式大全
- docker中管理数据
- HDU5907 Find Q 数学
- 【Egret】Lakeshore 使用中的一些疑难解决技巧!
- app.config的坑
- WPF: 自动设置Owner的ShowDialog 适用于MVVM
- Sql Server登录失败问题
- nginx配置https访问
- ES系列十六、集群配置和维护管理
- vsts 管理 持续集成 跟自动化测试
- Oval框架如何校验枚举类型的一种思路
- SpringMvc+JavaConfig+Idea 基于JavaConfig搭建项目