编程语言
首页 > 编程语言> > python – 使用pyglet显示numpy数组不正确

python – 使用pyglet显示numpy数组不正确

作者:互联网

我在使用pyglet显示numpy数组时遇到问题.我找到了一个与我用过的非常相似的话题(how to display a numpy array with pyglet?).我想以灰度显示数组,但是pyglet用颜色显示它,请参见图像:http://i.stack.imgur.com/pL6Yr.jpg

def create(self, X,Y):

    IMG = random((X,Y)) * 255
    self.IMG = dstack((IMG,IMG,IMG))

    return self.IMG

def image(self):

    self.img_data = self.create(X,Y).data.__str__()
    self.image = pyglet.image.ImageData(X,Y, 'RGB', self.img_data, pitch = -X*3)

    return self.image

如果我保存并加载数组而不是它可以工作(但它会慢得多):

def image(self):

    self.im_save=scipy.misc.toimage(self.create(X,Y),cmin=0, cmax=255)
    self.im_save.save('outfile.png')
    self.image = pyglet.image.load('outfile.png')

    return self.image

我得到了我想要的东西:

i.stack.imgur.com/FCY1v.jpg

我在第一个代码示例中找不到错误:(

编辑:

非常感谢你的回答.有了Bago的提示我得到了这个代码工作:)确实nfirvine的建议是合理的,因为我只想在灰度显示矩阵.

def create(self, X,Y):

        self.IMG = (random((X,Y)) * 255).astype('uint8')

        return self.IMG


def image(self):

        self.img_data = self.create(X,Y).data.__str__()
        self.image = pyglet.image.ImageData(X,Y, 'L', self.img_data)

        return self.image

解决方法:

我认为pyglet期待uint8,你试过吗?

IMG = ( random((X,Y)) * 255 ).astype('uint8')

标签:python,arrays,numpy,pyglet
来源: https://codeday.me/bug/20190610/1208576.html