У меня проблемы с отображением массива numpy с помощью pyglet. Я нашел очень похожую тему (как отобразить массив numpy с помощью pyglet ?), который я использовал. Я хочу отобразить массив в оттенках серого, но pyglet отображает его в цветах, см. изображение: https://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
create
X
иY
являются локальными переменными, но в изображении они являются глобальными, которые не определены в вашем листинге. - person nfirvine   schedule 28.01.2012self
. - person nfirvine   schedule 28.01.2012