4

私は、すべての初心者であるOpenCVを使用しています。

シナリオがあり、壁に投影し、カメラを搭載した一種のロボットを構築しています。カメラで追跡されたブロブの座標の実際の値を取得できるように、画像を処理する方法を知りたかったのですか?

4

1 に答える 1

9

まず、カメラの固有値を調整する必要があります。これを行うには、厚紙に印刷されたチェッカーボード パターンを使用します。OpenCV には、このための方法がありますが、完成したツールもあります。アイデアを得るために、ライブ ビデオ ストリームから調整するための Python コードをいくつか作成し、段ボールをカメラに沿ってさまざまな角度と距離で動かしました。ここを見てください:http://svn.ioctl.eu/pub/opencv/py-camera_intrinsic/

次に、カメラの外部、つまりカメラの位置を調整する必要があります。あなたの世界座標。いくつかのマーカーを壁に配置し、それらのマーカーの 3D 位置を定義して、OpenCV にこれに対する外部関数を調整させることができます (cvFindExtrinsicCameraParams2)。サンプル コードでは、外部 wrt を計算します。カメラの正しい視点でティーポットをレンダリングできるようにします。これを必要に応じて調整する必要があります。

平面にのみ投影すると仮定します。検出されたブロブの 3D 座標を取得するには、ジオメトリを知る必要があります。次に、カメラ画像でブロブを見つけ、固有、外部、およびジオメトリを知ることができます。固有/外部に従ってカメラから各ブロブの光線をキャストし、そのような各光線と既知のジオメトリとの交点を計算できます。交点は、ブロブが投影されるワールド空間の 3D ポイントです。

于 2010-08-31T11:25:31.483 に答える