728x90
QR 코드안에 3개의 위치 검출 패턴 들어 있음.
A,B,C 어느 방향에서라도 백색과 흑색 셀의 비율이 반드시 1:1 3:1 1:1 이 된다.
따라서 이게 그림이 기울어져 있든 말든 360도 모든 방향에서 고속 인식과 판독이 가능하다.
오류 복원 기능이 잇음, 최대 30% 복원이 가능하다.
연속 기능을 제공한다. 하나의 데이터를 분할 해서 여러개의 QR코드로 표시가능 ,최대 16개로 분할이 가능. 좁고 긴띠 모양으로 표시가능하다.
디자인을 접합할 수 있다.
QR코드를 구성하는 최소 단위를 셀이라고 한다(흑백의 정사각형). QR코드는 셀의 조합으로 표시됨.
QR코드가 2가지 패턴이있는데 얼라인먼트 패턴이 존재하는 것이 좀 더 업그레이드된 버젼이다.
얼라인먼트 패턴은 시야각에 따른 오곡을 보정하기위해사용한다. 앞에서 배운 perspective transform을 사용한다.
타이밍 패턴은 흰색 검은색 교대로 계속나온다. 일종의 간격의 기준이 되는 것이다.
간단한 예시
#!/usr/bin/env python
import cv2
from pyzbar import pyzbar
image = cv2.imread('QR_code1.png')
qrcodes = pyzbar.decode(image)
for qrcode in qrcodes:
(x,y,w,h) = qrcode.rect
cv2.rectangle(image, (x,y), (x+w,y+h) , (0,0,255),2) # qr code contour
text = qrcode.data #qr code's data
cv2.putText(image,text,(x,y-6) ,cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,0,255),2) # writing text above contour
print("[INFO] Found ", text)
cv2.imshow("Image",image)
cv2.waitKey(0)
728x90