https://prlabhotelshoe.tistory.com/34
이전 포스팅에서 cvlib 라이브러리를 활용하여 이미지 속 객체들을 검출해보는 테스트를 실시하였습니다. 이번 포스팅에서는 영상or캠 에서 객체 검출 테스트를 해보겠습니다.
※GPU 연동 빌드를 실시하지 않고 테스트를 진행하거나 GPU가 없는 경우 해당 과정을 생략하고 바로 소스코드로 넘어가시면 되겠습니다.
https://prlabhotelshoe.tistory.com/26
소스 코드 작성에 앞서, OpenCV를 GPU 연동 빌드를 하였다면 다음의 작업을 통해 GPU와 연동된 테스트를 실시해볼 수 있겠습니다. OpenCV의 GPU 연동에 대해선 상단의 링크를 참조하면 되겠습니다.
먼저, cvlib 라이브러리가 설치된 경로로 진입합니다. 저의 경우 anaconda의 가상환경에서 테스트를 진행하였기 때문에 다음의 경로에 해당 라이브러리가 위치하였습니다.
anaconda 환경의 경우 \anaconda3\envs\cpt\Lib\site-packages\cvlib 의 경로에 위치해 있으며, 일반적인 python 개발 환경일 경우 \Python38\Lib\site-packages\cvlib 일 것입니다. 해당 경로에서 object_detection.py 파일을 기타 편집기나 IDE 등을 통해 실행시킵니다. 저의 경우 VScode를 통해 실행하였습니다.
해당 파일을 열고 66번째 라인에 detect_common_objects 함수를 볼 수 있는데, 해당 변수 중 enable_gpu 값을 True로 변경합니다.
저장한 뒤 이제 코드 작성을 실시하면 되겠습니다.
소스 코드
import cvlib as cv
from cvlib.object_detection import draw_bbox
import cv2
vedio_path = '/vedio.mp4' #-- 동영상 파일 경로
webcam = cv2.VideoCapture(vedio_path) #-- 캠 사용 시 vedio_path 대신 0 사용
if not webcam.isOpened():
print("Could not open webcam")
exit()
while webcam.isOpened():
status, frame = webcam.read()
if not status:
break
#-- detect 함수 불러오기
bbox, label, conf = cv.detect_common_objects(frame)
#-- 검출 객체 박스 처리
if label:
out = draw_bbox(frame, bbox, label, conf, write_conf=True)
cv2.imshow("Real-time object detection", out)
#-- q 입력 시 종료
if cv2.waitKey(1) & 0xFF == ord('q'):
break
webcam.release()
cv2.destroyAllWindows()
테스트
이 역시도 검출 성능 또한 yolo 기반이기 때문에 yolo와 같은 출력 성능을 보입니다. GPU와 연동하지 않을 경우 느린 성능의 검출을 볼 수 있겠습니다.
'Python > OpenCV' 카테고리의 다른 글
[OpenCV] convexHull 활용 이미지 텍스트 검출 (0) | 2023.01.27 |
---|---|
[OpenCV] 웹캠 자동 캡쳐 (0) | 2022.09.01 |
[OpenCV] cvlib 이미지 객체 인식 (0) | 2022.03.08 |
[OpenCV] HOG(Histogram of Oriented Gradients) 영상 테스트 (0) | 2022.03.03 |
[OpenCV] HOG(Histogram of Oriented Gradients) 이미지 테스트 (0) | 2022.03.03 |
댓글