OpenCV에서 제공하는 Tracker를 사용한 Tracking 예제입니다.
2024. 5. 23 최초작성
import cv2 import time # 카메라 장치 열기. 윈도우/리눅스에선 0을 사용하고 맥북에선 1을 사용합니다. cap = cv2.VideoCapture(1) # 웹캠 초기화 시간을 고려하여 딜레이를 줍니다. time.sleep(1) # 트래커 객체를 생성합니다. tracker = cv2.TrackerKCF_create() # 첫 프레임 읽어옵니다. ret, frame = cap.read() if not ret: print("프레임을 읽을 수 없습니다.") cap.release() cv2.destroyAllWindows() exit(1) # ROI를 선택합니다. 사각형 그릴 시작위치에서 마우스로 클릭 후 드래그하여 사각형을 완성 후, ESC 키를 누르면 됩니다. roi = cv2.selectROI("tracker", frame, fromCenter=False, showCrosshair=True) print(roi) # ROI가 선택되지 않은 경우입니다. if roi[2] == 0 or roi[3] == 0: print('ROI가 선택되지 않았습니다.') cap.release() cv2.destroyAllWindows() exit(0) # 트래커를 지정한 ROI로 초기화합니다. tracker.init(frame, roi) # 트래킹 프로세스를 시작합니다. print("Start the tracking process, press ESC to quit.\n") while True: # 비디오로부터 프레임을 가져옵니다. ret, frame = cap.read() if not ret: break # 트래킹 결과를 업데이트하여 변경된 ROI를 반환받습니다. success, roi = tracker.update(frame) if success: # 트래킹된 객체의 위치에 사각형을 그려좁니다. p1 = (int(roi[0]), int(roi[1])) p2 = (int(roi[0] + roi[2]), int(roi[1] + roi[3])) cv2.rectangle(frame, p1, p2, (255, 0, 0), 2, 1) else: # 트래킹 실패시 메시지 출력합니다. cv2.putText(frame, "Tracking failure detected", (100, 80), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2) # 영상을 화면에 보여줍니다. cv2.imshow("tracker", frame) # ESC 키를 누르면 종료헙니다. if cv2.waitKey(1) == 27: break # 자원을 해제합니다. cap.release() cv2.destroyAllWindows() |
참고
https://docs.opencv.org/4.x/d2/d0a/tutorial_introduction_to_tracker.html
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
SIFT와 XFeat 사용해보기 (0) | 2024.07.28 |
---|---|
OpenCV에서 CUDA 사용해보기 (0) | 2024.06.29 |
OpenCV Python 마우스 이벤트 예제 (0) | 2024.05.18 |
두 점 사이의 각도를 구하는 OpenCV Python 예제 코드 (1) | 2024.04.25 |
OpenCV - 이미지 파일을 mp4 동영상 파일로 변환하는 파이썬 코드 (0) | 2024.04.20 |