opencv-qr码识别

it2024-04-05  61

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码存在弯曲等情况是识别不了的,这个还是需要深度学习来预测和识别

如下图就无法检测和识别:

最新回复(0)