반응형

 

 

먼저 바코드를 인식하는 open source 라이브러리를 제공해주는데, 그 라이브러리를 pip을 이용해 다운로드 한다.

윈도우의 cmd 창을 이용해서 다운받아본다.

 

총 3개의 라이브러리가 필요하다.

1. openCV (영상인식 라이브러리)

pip install opencv-python

2. numpy (연산 처리 라이브러리)

pip install numpy

위에 opencv를 받을 때 저절로 같이 설치 되었다.

3. pyzbar (바코드 인식 관련 라이브러리)

pip install pyzbar

 

반응형

 

자 이제 필요한 모든 라이브러리를 받았으니 아래와 같이 코드를 동작시켜본다.

'''

made by 안산드레이아스
https://ansan-survivor.tistory.com/

'''

# Python Version 3.7.1

import pyzbar.pyzbar as pyzbar  # pip install pyzbar
import numpy as np              # pip install numpy
import cv2                      # pip install opencv-python

# 바코드 탐지하는 엔진 (바코드 및 QR코드 탐지)
def decode(im):
    # Find barcodes and QR codes
    decodedObjects = pyzbar.decode(im)

    # Print results
    for obj in decodedObjects:
        print('Type : ', obj.type)
        print('Data : ', obj.data, '\n')

    return decodedObjects


# Display barcode and QR code location
def display(im, decodedObjects):
    # Loop over all decoded objects
    for decodedObject in decodedObjects:
        points = decodedObject.polygon

        # If the points do not form a quad, find convex hull
        if len(points) > 4:
            hull = cv2.convexHull(np.array([point for point in points], dtype=np.float32))
            hull = list(map(tuple, np.squeeze(hull)))
        else:
            hull = points;

        # Number of points in the convex hull
        n = len(hull)

        # Draw the convext hull
        for j in range(0, n):
            cv2.line(im, hull[j], hull[(j + 1) % n], (255, 0, 0), 3)

    # Display results
    cv2.imshow("Results", im);
    cv2.waitKey(0);

# 파일명 zbar.jpg의 이미지에서 바코드를 탐지하면 해당 코드를 리턴
# Main
if __name__ == '__main__':
    # Read image
    im = cv2.imread('zbar.jpg')

    decodedObjects = decode(im)
    display(im, decodedObjects)

 

이미지 파일 zbar.jpg는 현재 파이썬 파일과 동일 경로에 있어야 한다. (이부분은 절대경로로 수정가능)

zbar.jpg 의 이미지는 아래와 같다. (파일도 업로드)

zbar.jpg
0.37MB

이 이미지파일에 저 파이썬 코드를 돌려본다.

 

*결과

해당 바코드를 탐지해서 숫자를 리턴하고 보여준다.

그리고 어디부분을 인식했는지 파랑색 사각박스로 보여준다.

QR코드도 인식된다. 어떤 타입인지 함께 리턴된다.

반응형

+ Recent posts