前回のライブラリとopencvでウェブカメラを利用するコードの合わせ技で、リアルタイムに物体(またはポーズ)検出をできるようにしたサンプルです。(RaspberryPi4上で)かなり遅延は気になりますが、一応、動いてるのは分かる…という雰囲気で動作します。
一見簡単そうなのですが、RaspberryPi上にultralyticsを直接インストールできず、venvを使っている関係でライブラリの依存関係がややこしいです。imshowのエラーで悩まされましたが、cv2.namedWindow
の後でYOLOライブラリをロードすることで何故か回避できています。
24.02.01 picamera2(ラズパイ標準のカメラ)を利用する場合のコード例をコメントとして追記しました。
import cv2
# from picamera2 import Picamera2
if __name__ == '__main__':
cv2.namedWindow('find-on-video')
cam = cv2.VideoCapture(0)
# cam = Picamera2()
# cam.start()
from ultralytics import YOLO
model = YOLO('yolov8n.pt') # yolov8n-pose.pt for pose detection
while True:
ret, image = cam.read()
# image = cam.capture_image("main")
results = model(image)
cv2.imshow('find-on-video',results[0].plot())
k = cv2.waitKey(1)
if k != -1:
break
cam.release()
cv2.destroyAllWindows()
./venv/bin/python3 find-in-video.py
これまでの軌跡: