ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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를 봐주시길 바랍니다.

     

    반응형

    댓글

Designed by Tistory.