見出し画像

YOLOによるUSBカメラを利用した物体認識をしてみる

YOLO-v10が出ましたので、USBカメラによる物体認識をしてみようと思いました。

下記の文言をよく読んでみると、Ultralyticsへの統合はまだのようです。yolov10n.ptを利用してみようとしましたがうまくいきませんでした。

注意書き

そのうち統合されることを願って、yolov9c.ptをダウンロードして、USBカメラで物体認識できるコードを紹介していきます。

import cv2
import torch
from ultralytics import YOLO

# モデルの読み込み
model = YOLO('yolov9c.pt')  # ここに正しいモデルファイルを指定してください

# クラス名の取得
names = model.names

# カメラ映像のキャプチャ
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 画像の前処理と物体検出
    results = model(frame)

    # 検出結果の描画
    for result in results:
        boxes = result.boxes
        for box in boxes:
            x1, y1, x2, y2 = box.xyxy[0].tolist()
            conf = box.conf[0]
            cls = box.cls[0].item()
            label = names[int(cls)]

            # バウンディングボックスとラベルの描画
            cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
            cv2.putText(frame, f'{label} {conf:.2f}', (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

    # 結果の表示
    cv2.imshow("YOLO Object Detection", frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
  1. 必要なライブラリ(OpenCV、PyTorch、Ultralytics YOLO)をインポートします。

  2. YOLOモデルを読み込み、クラス名を取得します。

  3. USBカメラから映像をキャプチャします。

  4. 各フレームをモデルに入力し、物体検出を行います。

  5. 検出された物体に対して、バウンディングボックスとラベルを描画します。

  6. 結果をウィンドウに表示し、qキーが押されたらプログラムを終了します。


yolov10n.ptがultralyticsで使えるようになったら、このコードで試してみます。


この記事が気に入ったらサポートをしてみませんか?