10-3CameraQRReader.py

000: import cv2
001: import webbrowser
002: import numpy as np
003:
004: def __main():
005: width = 1280.
006: height = 720.
007: cap = cv2.VideoCapture(0, cv2.CAP_V4L)
008: cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
009: cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
010:
011: if not cap.isOpened(): # ビデオキャプチャー可能か判断
012: print(“Not Opened Video Camera”)
013: exit()
014:
015: margin = 100
016: pt1 = np.array([(width / 2) – margin, (height / 2) – margin], dtype=np.int)
017: pt2 = np.array([(width / 2) + margin, (height / 2) + margin], dtype=np.int)
018: color = (255, 255, 255)
019: while True:
020: ret, img = cap.read()
021: org = img.copy()
022: img = cv2.flip(img, 1) # 画像を左右反転
023: img = cv2.rectangle(img=img, pt1=(pt1[0], pt1[1]), pt2=(pt2[0], pt2[1]), color=color, thickness=2) # thickness=5で線の太さ
024: qrArea = org[pt1[1]:pt2[1], pt1[0]:pt2[0]]
025: qrData = getQRCode(qrArea)
026: if len(qrData) > 0:
027: webbrowser.open(url=qrData, new=1, autoraise=True)
028: cv2.waitKey(0)
029: break
030:
031: cv2.imshow(‘QRCode Reader’, img)
032: if cv2.waitKey(10) > -1:
033: break
034:
035: cap.release()
036: cv2.destroyAllWindows()
037:
038: def getQRCode(img):
039: global code
040: try:
041: data, point, qrcode = code.detectAndDecode(img=img)
042: except Exception as e:
043: print(e)
044: data = “”
045: print(“data = {0}”.format(data))
046:
047: return data
048:
049: if __name__ == ‘__main__’:
050: print(cv2.__version__)
051: code = cv2.QRCodeDetector()
052: __main()