728x90
10줄짜리 파이썬 코드로 간단히 사진 속의 차량 대수를 카운트 해보자. 먼저 아래의 라이브러리가 설치되어 있어야 한다. 설치 이전이라면 각각의 링크를 참고해 설치하도록 한다.
opencv-python
cvlib
matplotlib
tensorflow
keras
상기 라이브러리 설치와 관련하여 다음 포스팅을 참고해도 좋다.
- opencv-python 설치 2019/09/24 - [파이썬 Python] - 우분투에 opencv-python 설치하기 Install OpenCV-Python in Ubuntu 18.04
- cvlib 설치 2019/09/24 - [파이썬 Python] - 오픈소스 컴퓨터 비전 라이브러리 cvlib 설치
- 텐서플로우 및 케라스 설치 2018/12/15 - [딥러닝 Deep Learning] - 딥러닝 툴 설치하기 Anaconda, Jupyter Notebook, TensorFlow and Keras for Deep Learning
필수 파이썬 라이브러리를 불러오고, 저장소로부터 이미지를 읽은 후, 해당 이미지속의 사물을 식별한다. 그리고 식별된 사물에 박스를 치고, 라벨링한다. 마지막으로 이미지 속의 자동차 수를 카운트한 다음 출력한다. 전체 코드는 다음과 같이 10줄이다.
import cv2
import matplotlib.pyplot as plt
import cvlib as cv
from cvlib.object_detection import draw_bbox
im = cv2.imread('cars_1.jpeg')
bbox, label, conf = cv.detect_common_objects(im)
output_image = draw_bbox(im, bbox, label, conf)
plt.imshow(output_image)
plt.show()
print('Number of cars in the image is '+ str(label.count('car')))
원래 이미지 cars_1.jpeg
식별 결과는 다음과 같다.
Number of cars in the image is 29
다른 이미지를 가지고도 테스트해자.
Number of cars in the image is 15
Number of cars in the image is 10
확장자가 틀린 경우에는 다음과 같은 에러가 발생하므로, 해당 에러가 발생하는 파일 이름을 다시 확인해본다.
AttributeError Traceback (most recent call last)
<ipython-input-9-f98a1313245b> in <module>
4 from cvlib.object_detection import draw_bbox
5 im = cv2.imread('automobile.jpeg')
----> 6 bbox, label, conf = cv.detect_common_objects(im)
7 output_image = draw_bbox(im, bbox, label, conf)
8 plt.imshow(output_image)
~/anaconda3/envs/lindy/lib/python3.7/site-packages/cvlib/object_detection.py in detect_common_objects(image, confidence, nms_thresh, model)
58 def detect_common_objects(image, confidence=0.5, nms_thresh=0.3, model='yolov3'):
59
---> 60 Height, Width = image.shape[:2]
61 scale = 0.00392
62
AttributeError: 'NoneType' object has no attribute 'shape'
728x90