[YOLO] YOLOv8 실시간 물체 탐지 실습

2025. 3. 20. 17:02Computer Engineering/강화학습

1. PyCharm 환경 만들기

먼저 pycharm에서 virutualenv 의 가상환경을 설정해준다. 아래 블로그를 참고하여 가상환경 설정을 해주었다. 

https://yuxlog.tistory.com/17

 

[python] pycharm을 이용한 가상환경(virtualenv) 생성 방법

주로 vscode를 사용하고 있는데, 파이참을 써야하는 상황이 생겼다. 역시나 환경설정이 제일 어렵다. 다음은 파이참 가상환경 생성하는 방법이다. 아나콘다 가상환경이 아닌 파이참 자체에서의

yuxlog.tistory.com

 

2. 실습을 위한 필수 라이브러리를 설치한다

pip install ultralytics opencv-python numpy

 

참고로 다운받아야 되는 라이브러리가 많아서 시간이 생각보다 오래 걸릴 수 있다.

 

3. 실시간 탐지 코드를 작성한다

from ultralytics import YOLO
import cv2

model = YOLO("yolov8n.pt")

#웹캠 연결 (기본웹캠 0, 외장웹캠 1)
cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    #YOLO 탐지 실행
    results = model(frame)
    result = results[0]

    #탐지 결과 화면에 표시
    for box in result.boxes:  # 최신 YOLO 버전
        x1, y1, x2, y2 = map(int, box.xyxy[0])  # 바운딩 박스 좌표
        conf = box.conf[0].item()  # 신뢰도
        cls = int(box.cls[0].item())  # 클래스 ID

        cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) #0,255,0 초록색 박스
        label = f"ID {cls} - {model.names[int(cls)]}: {conf:.2f}"
        cv2.putText(frame, label, (int(x1), int(y1)-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
    cv2.imshow("YOLOv8 Real-Time Object Detection", frame)

    #'q'키를 누르면 종료
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()