-
[Opencv Python] 바코드 Detecting 하는 프로그램 만들기(feat . pyzbar)프로그래밍/OpenCV 2022. 1. 1. 09:32반응형
안녕하세요 까치입니다. 오늘은 바코드 리딩을 하기 위한 소스를 가져왔습니다.
먼저 필요한 라이브러리 opencv와 pyzbar를 임포트 시켜주겠습니다.
처음 시작하시는 분들은
pip install opencv-python
pip install pyzbar
를 먼저 install 해 주시기 바랍니다.
import cv2 import pyzbar.pyzbar as pyzbar
그 다음은 프로그램을 실행 해야겠죠?
프로그램을 시작할때 main함 수를만들어 주었고
그 안에 이런 소스 코드를 만들었습니다
동영상을 가져온다음
동영상을 출력하는 소스 입니다.
바코드 인식은 함수로 정의 해 놓았습니다.
def main(): try: # 동영상 불러오기 cap = cv2.VideoCapture("barcode.mp4") # 동영상 연결 되었는지 확인 및 영상 재생 while cap.isOpened(): # 실행 내역 및 프레임 가져오기 ret, frame = cap.read() # 실행 내역이 true이면 프레임 출력 if ret: # 바코드 인식 frame = read_frame(frame) # 프레임 출력 cv2.imshow("barcode reader", frame) if cv2.waitKey(1) == 27: break else: print("예외") break except Exception as e: print(e) finally: cap.release() cv2.destroyAllWindows()
동영상에서 read해온 frame에서
pyzbar를 이용하여 디코딩 및 바코드 정보를 읽어오는 로직입니다.
font = cv2.FONT_HERSHEY_SIMPLEX # 바코드 인식 및 테두리 설정 def read_frame(frame): try: # 바코드 정보 decoding barcodes = pyzbar.decode(frame) # 바코드 정보가 여러개 이기 때문에 하나씩 해석 for barcode in barcodes: # 바코드 rect정보 x, y, w, h = barcode.rect # 바코드 데이터 디코딩 barcode_info = barcode.data.decode('utf-8') # 인식한 바코드 사각형 표시 cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2) # 인식한 바코드 사각형 위에 글자 삽입 cv2.putText(frame, barcode_info, (x , y - 20), font, 0.5, (0, 0, 255), 1) return frame except Exception as e: print(e)
되게 간단한 코드로 바코드를 불러오고
바코드의 정보를 화면에 표시해줄 수있는 코드입니다.
이코를 이용해 소스 변경 및 많은 기능을 생성해 낼 수 있을 것 같습니다.
전체 소스 코드는 https://github.com/hyunseokjoo/detecting_BarAndQR을 방문해서
barCode.py를 봐주시길 바랍니다.
반응형'프로그래밍 > OpenCV' 카테고리의 다른 글
[OpenCV Python] 관점 변환 구현해보기 (0) 2022.01.01 [OpenCV C++] tracker 를 사용한 object tracker 구현해보기 (2) 2022.01.01 [C++ OpenCV] Imread()함수 사용법 (0) 2021.12.18