我正在使用 Open CV,我可以使用我的代码从图像中提取多维数据,但是显示它的简单方法是什么?我有一个 3D 数组:
line start [x] [y] [z]
line end [x] [y] [z]
两行之间的任何内容都将填充一个坚实的平面。
在给定这些点或我遗漏的任何其他点的情况下,我可以使用某种功能轻松显示 3d 图像吗?
比如这段伪代码:
display_3d(x,y,z,angle)
非常感谢任何帮助。我也在使用 C++。
最佳答案
我不确定我是否理解正确,但为什么你有 3D 阵列???
表示表面的 3D 点数组通常是 3D 点的一维数组:
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.如果不是那么你必须对你的数据进行三角测量
- 这不是一件容易的事,但有一些库可以做到这一点。
- 不确定 OpenCV 是否也能做到这一点,寻找三角测量函数(耳坠等)
- 我更喜欢自己的三角测量例程(更适合调试和额外的多边形信息),但如果您不习惯使用算法,则很难高效且正确地对其进行编码。
关于c++ - 如何获取 3d 维数组并将其转换为模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15445927/