YOLOv8で物体の長さを取得する方法
結論から言うと、画像中に既知の長さの物体があれば可能。
※ 今回はある程度垂直に撮影され、比較する物体の奥行き方向が0の場合を想定している。
1. 推論結果からBBoxの長さを取得する
下記のコードで推論したバウンディングボックスの座標を取得できる。
results[0].cpu().boxes.numpy().boxes
2. 既知の物体の比の計算
既知の長さの物体と長さがわからない物体のバウンディングボックスの大きさを比較する。
仮に既知の長さ物体を縦5cm、横2センチ、BBoxの縦をy1,横をx1とすると
5cm : 3cm = y1 : x1
となる。
y1,y2については画像ごとに結果が変わり、上記のコードで取得できる。
詳しくは公式の情報を確認のこと。
これで現実世界の長さを画像世界の長さに置き換えることができた。
3. 目的の物体の長さの計算
あとは、2で得られた情報を元に目的の物体の長さを比で計算する。