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()
必要なライブラリ(OpenCV、PyTorch、Ultralytics YOLO)をインポートします。
YOLOモデルを読み込み、クラス名を取得します。
USBカメラから映像をキャプチャします。
各フレームをモデルに入力し、物体検出を行います。
検出された物体に対して、バウンディングボックスとラベルを描画します。
結果をウィンドウに表示し、qキーが押されたらプログラムを終了します。
yolov10n.ptがultralyticsで使えるようになったら、このコードで試してみます。
この記事が気に入ったらサポートをしてみませんか?