写东西就要写全面,前两天写了如何用python生成二维码,今天博主就给大家介绍一个识别二维码的方法。
1、安装本次开发所需要的库opencv 和pyzbar
pip install pyzbar
pip install opencv-python
2、写代码
1)导入所需的库
from pyzbar.pyzbar import decode
import cv2
2)创建一段测试代码,查看识别后的返回数据
def test():
img = cv2.imread("lizaza.png")
result = decode(img)
print(result)
3)根据需要保留对应的返回数据
def test():
img = cv2.imread("lizaza.png")
result = decode(img)
print(result)
for d in result:
print(d.data)
4)调用opencv的方法来实例化一个对象
capture = cv2.VideoCapture(0)
5)创建一个死循环实时更新摄像头所采集到的信息
while True:
# 获取图像
fet, frame = capture.read()
6)识别采集到的二维码并输出所需的数据
# 识别二维码
data = decode(frame)
for d in data:
r_data = d.data.decode("utf-8")
print(r_data)
7)显示摄像头所采集到的图像,并设置键盘监听来关闭程序
cv2.imshow("QRCode", frame)
# 设置关闭窗口
if cv2.waitKey(1) & 0xFF == ord(‘q‘):
break
pass
3、完整代码
from pyzbar.pyzbar import decode
import cv2
capture = cv2.VideoCapture(0)
while True:
# 获取图像
fet, frame = capture.read()
# 识别二维码
data = decode(frame)
for d in data:
r_data = d.data.decode("utf-8")
print(r_data)
cv2.imshow("QRCode", frame)
# 设置关闭窗口
if cv2.waitKey(1) & 0xFF == ord(‘q‘):
break
pass
pass
capture.release()
cv2.destroyAllWindows()
4、总结
pyzbar+opencv直接识别静态图片时无法识别倾斜的二维码,但是实时识别二维码的时候可以正常识别,博主暂时也搞不懂是啥原因。opencv如果直接使用cv.imshow()函数,窗口名中包含中文,则显示为乱码,建议还是使用英文命名。
版权声明:该文章为博主原创,如有转载请标明出处https://www.lizaza.cn
python使用pyzbar+opencv实现实时识别二维码--李渣渣(lizaza.cn)
原文:https://www.cnblogs.com/lizaza/p/13020049.html