Open-cvバーコードとQRコードの読み取り


Open-cvでQRコードとバーコードを読みます

import cv2
import pyzbar.pyzbar as pyzbar

font = cv2.FONT_ITALIC
# cv2.FONT_종류를 적어 원하는 폰트 적용하시면 됩니다 😇
def read_frame(frame):
    try:
        barcodes = pyzbar.decode(frame)
        #바코드를 받아와서 decode를 적용해서 읽어오는 부분
        #이렇게 바코드를 읽구나라고 느꼈습니다..신기해...
        for barcode in barcodes:
            
            x, y, w, h = barcode.rect
            #바코드 위치를 찾기 
            
            barcode_info = barcode.data.decode('utf-8')
            #디코더 시킨 바코드 안에서 들어있는 정보를 decode 시켜 문자열로 변경
            cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
            cv2.putText(frame, barcode_info, (x, y-20), font, 0.5, (255, 0, 0), 4)
            
    except Exception as e:
        print(e)
        
    return frame

cap = cv2.VideoCapture(0)
# 실시간 화면에 얼만큼 작용하는지 궁금해서 0을 주고 확인했습니다.
# 이용하려는 파일에 따라 cv2.VideoCaputre(.jpg or .mp4)
while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        frame = read_frame(frame)
        
        cv2.imshow('Barcode', frame)
        if cv2.waitKey(10) & 0xFF == ord('q'):
            cap.release()
            cv2.destroyAllWindows()


Mac OSXが必要

pip install pyzbar X

brew install bar
arch -arm64 brew install zbar
conda install pyzbar
# import Error가 안나면 OK

import Error 발생 시 설치 된 파일을 복사 후 옮겨줘야합니다.

# pkg-config --libs zbar  -> 패키지 위치 확인
# python -> import sys -> sys.executable 로 python 위치 찾기
cp /opt/homebrew/Cellar/zbar/0.23.90_1/lib/pkgconfig/zbar.pc /Users/{1}/miniforge3/envs/{2}/lib/pkgconfig
# {} 곳에 자신 경로를 넣으면 됩니다. 
# {1} = user_name, {2} = env_name
cp /opt/homebrew/Cellar/zbar/0.23.90_1/lib/libzbar.0.dylib /Users/{1}/miniforge3/envs/{2}/lib/
# {1} = user_name, {2} = env_name
cd /Users/{1}/miniforge3/envs/{2}/lib
# {1} = user_name, {2} = env_name
ln -s libzbar.0.dylib libzbar.dylib

import Clear 🥹