반응형
먼저 바코드를 인식하는 open source 라이브러리를 제공해주는데, 그 라이브러리를 pip을 이용해 다운로드 한다.
윈도우의 cmd 창을 이용해서 다운받아본다.
총 3개의 라이브러리가 필요하다.
1. openCV (영상인식 라이브러리)
pip install opencv-python
2. numpy (연산 처리 라이브러리)
pip install numpy
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 의 이미지는 아래와 같다. (파일도 업로드)
이 이미지파일에 저 파이썬 코드를 돌려본다.
*결과
해당 바코드를 탐지해서 숫자를 리턴하고 보여준다.
그리고 어디부분을 인식했는지 파랑색 사각박스로 보여준다.
QR코드도 인식된다. 어떤 타입인지 함께 리턴된다.
반응형
'파이썬(python) > Python OpenCV' 카테고리의 다른 글
[Python OpenCV] 왜곡된 이미지 펼치기, 굽어진 이미지 펼치기, 이미지 보정 (0) | 2020.09.17 |
---|---|
[Python OpenCV] 선분을 파악하고 선분의 중심에 수직선을 긋기 (0) | 2020.09.17 |
[Python OpenCV] 파이썬 글자 인식, 파이썬 OCR, 파이썬 Tesseract 사용 (2) | 2020.09.17 |
[Python OpenCV] 이미지 대조 색상 강조 시키기, 이미지 Contrast 기법 (0) | 2020.09.17 |
[Python OpenCV] 두개의 이미지를 하나로 합치기 (0) | 2020.09.17 |