我意识到有人问了一些类似的问题,但我仍然卡住了。
我正在尝试编写一小段代码,当单击使用 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;
}