Python에서 QR 코드와 바코드를 생성하여 정상적으로 읽거나 OpenCV에서 실시간으로 읽는 방법

0. 먼저



이번 만드는 것이 어떤 느낌으로 움직이는지 보고 싶은 분은 여기 (youtube의 동영상)에서 부디.

먼저 이번에 필요한 것을 한 번에 설치합니다.
pip install pyqrcode
pip install pypng
pip install python_barcode
pip install pyzbar

1.QR 코드 생성



여기서는 먼저 문자 정보를 포함하는 QR 코드를 생성합니다.

qrcode_barcode.py
import pyqrcode

a = pyqrcode.create(content="Hello From Jetsonnano",error='H') 

a.png(file='test.png',scale=6) 

이것을 실행하면 다음과 같은 QR 코드가 완성됩니다.

그런 다음 url 정보를 포함하는 QR 코드를 생성합니다. 이것은 일반적으로 책 등에 붙어있는 QR 코드입니다.

qrcode_barcode.py
import pyqrcode

b = pyqrcode.QRCode('https://www.youtube.com/channel/UCDYbu9aViDvkubFcwgbbKDA',error='M')

b.png('test2.png',scale=6)

이렇게하면 다음과 같은 QR 코드가 생성됩니다.


이 QR 코드들의 색을 바꾸거나 크기를 바꾸거나 할 수도 있으므로 걱정되는 분은 꼭 Youtube 를 봐 주세요.

2. 바코드 생성



그런 다음 바코드를 생성합니다. 파이썬에서 사용할 수있는 바코드 유형은 이번에 사용하는 사람 외에도 여러 가지가 있습니다. 신경이 쓰이는 분은 조사해 봐 주세요.

qrcode_barcode.py
import barcode
from barcode.writer import ImageWriter

d = '938469387183' 

a = barcode.get_barcode_class('ean13') 
b = a(d,writer=ImageWriter()) 
c = b.save('barcode') 

이렇게하면 다음과 같은 바코드가 생성됩니다. 바코드에는 문자도 포함될 수 있습니다.


3.QR 코드와 바코드 읽기



여기에서는 QR 코드와 바코드를 읽습니다. 둘 다 읽는 방법은 동일합니다.

qrcode_barcode.py
from pyzbar.pyzbar import decode 
from PIL import Image

d = decode(Image.open('qrcode.png'))
print(d[0].data.decode("utf-8"))
#e = decode(Image.open('barcode.png'))
#print(e[0].data.decode('utf-8'))

4.OpenCV를 사용한 읽기



여기에서 OpenCV를 사용하여 QR 코드 또는 바코드를 감지하면 화면에 해당 정보를 표시합니다.

qrcode_barcode.py
from pyzbar.pyzbar import decode
import cv2

cap = cv2.VideoCapture(0)
font = cv2.FONT_HERSHEY_SIMPLEX
while cap.isOpened():
    ret,frame = cap.read()
    if ret == True:
        d = decode(frame)
        if d:
            frame = cv2.putText(frame,d[0].data.decode('utf-8'),(10,50),font,1,(0,255,255),2,cv2.LINE_AA)
        cv2.imshow('frame',frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()

이렇게하면 카메라가 읽은 바코드와 같은 정보가 화면 위에 표시됩니다. 하지만, 이 방법은 그다지 멋지기 때문에 다음에 더 멋있는 방법을 소개합니다.

5.OpenCV를 사용한 읽기(멋짐)



바코드 등을 감지하면 빨간색 사각형으로 둘러싸고 그 위에 정보를 표시합니다.

qrcode_barcode.py
from pyzbar.pyzbar import decode
import cv2

cap = cv2.VideoCapture(0)
font = cv2.FONT_HERSHEY_SIMPLEX
while cap.isOpened():
    ret,frame = cap.read()
    if ret == True:
        d = decode(frame)
        if d:
            for barcode in d:
                x,y,w,h = barcode.rect
                cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
                barcodeData = barcode.data.decode('utf-8')
                frame = cv2.putText(frame,barcodeData,(x,y-10),font,.5,(0,0,255),2,cv2.LINE_AA)
        cv2.imshow('frame',frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()


이것은 스스로 만든 바코드나 QR코드는 읽을 수 있었습니다만, 책등에 대해서 있는 녀석은 읽을 수 없었습니다.

마지막으로



이번 만든 것은 Youtube 하지만 해설하고 있으므로 그쪽도 좋으면 봐 주세요. 질문, 조언 등이 있으면 꼭 댓글을 달아주세요.

좋은 웹페이지 즐겨찾기