import cv2
import numpy as np
import pyzbar.pyzbar as pyzbar
from skimage import io
url = "https://d33wubrfki0l68.cloudfront.net/19994bca1018ba79dd954bca9edc627dcd1f1dc0/d9ac1/wp-content/uploads/2018/11/19.jpg"
image = io.imread(url)
#也可以选择自己的qr码图像
# image = cv2.imread("qr.jpeg")
decodedObjects = pyzbar.decode(image)
'''
qr码信息:
print(decodedObjects)
[Decoded(data=b'http://moo.com', type='QRCODE',
rect=Rect(left=446, top=175, width=66, height=65), polygon=[Point(x=446, y=238), Point(x=510, y=240), Point(x=512, y=177), Point(x=447, y=175)]),
Decoded(data=b'no fee ATM', type='QRCODE', rect=Rect(left=22, top=21, width=83, height=82), polygon=[Point(x=22, y=21), Point(x=22, y=103), Point(x=105, y=103), Point(x=105, y=21)])]
'''
#第一个qr码
(x, y, w, h) = decodedObjects[0].rect
cropped = image[y-5:(y + h+5),x-5: (x + w+7)]
# cv2.imshow("qr", cropped)
cv2.imwrite("qr.png", cropped)
原图:
第一个qr码图像:
第一个qr码信息:
Decoded(data=b'http://moo.com', type='QRCODE', rect=Rect(left=446, top=175, width=66, height=65), polygon=[Point(x=446, y=238), Point(x=510, y=240), Point(x=512, y=177), Point(x=447, y=175)]),
第二个qr码图像:
第二个qr码信息:
Decoded(data=b'no fee ATM', type='QRCODE', rect=Rect(left=22, top=21, width=83, height=82), polygon=[Point(x=22, y=21), Point(x=22, y=103), Point(x=105, y=103), Point(x=105, y=21)])
注意:这个只是针对正常没有弯曲的qr码,如果qr码存在弯曲等情况是识别不了的,这个还是需要深度学习来预测和识别
如下图就无法检测和识别: