pyglet で numpy 配列を表示する際に問題があります。私が使用した非常によく似たトピック ( pyglet で numpy 配列を表示する方法は? ) を見つけました。配列をグレースケールで表示したいのですが、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