首页 > 解决方案 > glReadPixels 在 Python 中返回不同的数据类型

问题描述

我在 Ubuntu 中通过 Python 3.6 / PyOpenGL 3.1.0 在具有相同配置的两台不同机器上使用 OpenGL(除非我缺少某些东西)。

我在两台机器上运行相同的脚本。

代码是这样的:

    pixels = glReadPixels(0, 0, 640, 640, GL_RGB, GL_FLOAT)
    print(pixels)

在一台机器上print显示:

<OpenGL.arrays.ctypesarrays.c_float_Array_640_Array_640_Array_3 object at 0x7fcd1e681158>

而另一方面,我得到了一个浮点数组,正如预期的那样:

[[[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]
  ...

你怎么看待这件事?谢谢你。

标签: pythonopenglpyopengl

解决方案


按照乔的建议,我尝试print(type(pixels))并发现:

<class 'numpy.ndarray'>在打印漂亮矩阵的机器上

对比

<OpenGL.arrays.ctypesarrays. ...>在另一个上。

原来,第二台机器错过了numpy。安装后numpy,结果与第一台机器上的结果相同。

这特别烦人,因为脚本第二台机器在尝试使用pickle.

在这里留下这个答案,希望其他人可能会发现它有用。


推荐阅读