我正在使用 Open CV,我能够从我的代码中提取多维数据和图像,但是显示它的简单方法是什么?我有一个 3D 数组:
line start [x] [y] [z]
line end [x] [y] [z]
线条之间的任何东西都将被一个坚固的平面填充。
给定这些点或我缺少的任何其他点,我可以使用某种功能轻松显示 3d 图像吗?
比如这个伪代码:
display_3d(x,y,z,angle)
非常感谢任何帮助。我也在使用 C++。
首先,您需要找到点的凸包,这意味着找到一组点的明确且有效的表示。完成此操作后,您将需要对网格进行三角剖分,通常使用delaunay triangulation。QHull提供了这样的功能。
我不确定我是否理解正确,但为什么你有 3D 数组???
表示表面的 3D 点数组通常是 3D 点的 1D 数组:
float points[n][3];
// not float points[nx][ny][nz] !!!
我不是 CV 用户,所以我会坚持使用(OpenGL)渲染,但您可以使用任何其他渲染。
1.如果点代表凹平面
然后你可以在其他渲染中使用 GL_TRIANGLE_FAN 或任何类似的东西。
float points[n]={ {x,y,z},{x,y,z},...};
glBegin(GL_TRIANGLE_FAN);
glVertex3fv(points[0]);
glVertex3fv(points[1]);
glVertex3fv(points[2]);
...
glVertex3fv(points[n-1]);
glEnd();
2.如果不是,那么您必须对数据进行三角测量