c++ - 如何获取 3d 维数组并将其转换为模型?

标签 c++ arrays opencv model 3d

我正在使用 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/

相关文章:

c++ - 为什么优化器会删除我的代码?

python - 使用 OpenCV + Python + Mac 编写视频

iphone - 使用 iOS 开发计算机视觉应用程序

c++ - 如何在对象数组中打印对象的变量

Java pojo - 迭代新数据集合后回收缓存的哈希表值

arrays - 部分和查找/部分和集分配

c++ - 处理 OpenCV 中的序列?

c++ - 在 C++ 中使用 do-while 循环对 vector 的元素求和

c++ - C++ 中用于维护插入顺序并消除重复的数据结构

c++ - opengl 多纹理 glsl - 一次只有一个纹理