개발 환경
- Windows 10
- VisualStudio Code
- Python : 3.7.9
QR Code를 읽을 수 있는 프로그램을 찾다가 아래 참조에서 찾은 코드를 소개 한다. 기존 개발 환경 VS Code에서 바로 테스트 할 수 있다.
필요한 파이썬 라이브러리
- OpenCV : 이미지 처리, 컴퓨터 비젼 및 기계 학습 라이브러리
- Numpy : 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 라이브러리
- pyzbar : 주어진 이미지에서 Bar code, QR Code를 읽는다. EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 및 QR Code를 지원
라이브러리 설치
- OpenCV 설치
> pip install opencv-python
혹은
> pip install opencv-contrib-python
- numpy 설치
> pip install numpy
- pyzbar 설치
> pip install pyzbar
코드
- 필요 라이브러리 import
- 카메라로부터 이미지 캡쳐
cap = cv2.VideoCapture(0)while True: ret, frame = cap.read() decoder(frame) cv2.imshow('Image', frame) code = cv2.waitKey(10) if code == ord('q'): break
def decoder(image): gray_img = cv2.cvtColor(image,0) barcode = decode(gray_img)
for obj in barcode: points = obj.polygon (x,y,w,h) = obj.rect pts = np.array(points, np.int32) pts = pts.reshape((-1, 1, 2)) cv2.polylines(image, [pts], True, (0, 255, 0), 3)
barcodeData = obj.data.decode("utf-8") barcodeType = obj.type string = "Data " + str(barcodeData) + " | Type " + str(barcodeType) cv2.putText(frame, string, (x,y), cv2.FONT_HERSHEY_SIMPLEX,0.8,(255,0,0), 2) print("Barcode: "+barcodeData +" | Type: "+barcodeType)
cap = cv2.VideoCapture(0)while True:import cv2import numpy as npfrom pyzbar.pyzbar import decode
def decoder(image): gray_img = cv2.cvtColor(image,0) barcode = decode(gray_img)
for obj in barcode: points = obj.polygon (x,y,w,h) = obj.rect pts = np.array(points, np.int32) pts = pts.reshape((-1, 1, 2)) cv2.polylines(image, [pts], True, (0, 255, 0), 3)
barcodeData = obj.data.decode("utf-8") barcodeType = obj.type string = "Data " + str(barcodeData) + " | Type " + str(barcodeType) cv2.putText(frame, string, (x,y), cv2.FONT_HERSHEY_SIMPLEX,0.8,(255,0,0), 2) print("Barcode: "+barcodeData +" | Type: "+barcodeType)
cap = cv2.VideoCapture(0)while True: ret, frame = cap.read() decoder(frame) cv2.imshow('Image', frame) code = cv2.waitKey(10) if code == ord('q'): break
참조