私はopencvプロジェクトに取り組んでおり、書籍といくつかのソースコードであるさまざまなソースに従っています。私は本といくつかのソースコードの違いを発見しました。チェス盤を使用してカメラを較正する場合、チェス盤のコーナーからオブジェクトポイントを定義します。たとえば、左上角は(0,0)で、次の角は(0,1)です。しかし、本では座標系を(y、x)として使用していますが、ソースコードではインターネットで(x、y)を見つけました。右辺は+ x、下辺は+ yです。ソースコードから取らopencv camera calibration object_points orientation
for (int i=0; i<boardSize.height; i++) {
for (int j=0; j<boardSize.width; j++) {
objectCorners.push_back(cv::Point3f(i, j, 0.0f));
}
}
作品:
for (int i = 0; i < board_height; i++)
for (int j = 0; j < board_width; j++)
obj.push_back(Point3f((float)j * square_size, (float)i * square_size, 0));
1が正しい
ブック内のコード
?編集:
私は本の次のバージョンをチェックし、ライターは、関連部分で同じループを使用しています。
これは、取得したい3D座標系によって異なります。 – Micka
問題はすべてが同じですが、この部分は同じです。同じ関数が異なる座標系の出力を与えることはできませんか? @ミカ – ssovukluk
あなたは入力を意味する?オブジェクトポイントに対して選択した座標系は任意です。したがって、チェス盤の長い方の面をx軸、y軸、z軸、斜めなど、部屋のどこにでも配置したいかどうかはあなた次第です。 – Micka