同様の質問がいくつか寄せられていることは承知していますが、まだ行き詰まっています。
Kinect を使用して再構築された 3D シーンをクリックすると、マウスの x、yz 座標が得られるコードの小さなセクションを作成しようとしています。私の目的は、ロボット アームの「移動」機能を作成することです。
ウィンドウフレームでマウスのxy位置を見つけて、それを画面のフレームに変換してから、最終的にシーンのフレームにする必要があると思います。これは正しいですか?また、ピクセルから深度値を読み取る方法がわかりませんか?
私は Visual Studio と C++ プログラミングにかなり慣れていないため、正しいコードを書くのに苦労しています。新しいクラスを作成して含めるか、ビューアー プロジェクトに直接挿入するかがわかりません。
ここに私が書いたものがありますが、変更する必要があると確信しています。
どんな助けでも大歓迎です。
トビー
void get_point_position_MOUSE(int event, int x, int y, int flags,
void* depthMapZ) {
if (CV_EVENT_LBUTTONDOWN == event) {
if (DISP_IMAGE_DEPTH != IPL_DEPTH_32F) {
write_on_buffer(
g_strdup_printf(
"This only supports IPL_DEPTH_32F images.\n"));
return;
}
if (selectionMode != POINT_SEL_MODE_MOUSE) {
write_on_buffer(g_strdup_printf("X: %f Y: %f\n", (float) x,
(float) y));
CvPoint3D32f points = getWorldCo_Ords((float) x, (float) y,
(float) CV_IMAGE_ELEM((IplImage*) disparityMap, int, y, x));
write_on_buffer(g_strdup_printf("X: %f Y: %f Z: %f\n", points.x,
points.y,
(float) CV_IMAGE_ELEM((IplImage*) disparityMap, int, y, x)));
return;
}