#gtk3
#gtk3
Вопрос:
Я написал простое приложение GTK 3, которое считывает изображение, отображает его, применяет пороговое значение к интенсивности пикселей и пытается получить результат. Итак, у меня есть массив numpy со значениями пикселей. Я не знаю, как загрузить GtkImage из массива пикселей.
Кажется, ответом может быть класс gtk.gdk.Drawable. Я не могу импортировать GdkDrawable, потому что не найден тип introspection typelib. Итак, я застрял — как мне использовать массив numpy для установки изображения объекта GtkImage в Python?
Единственный известный мне способ сделать это — использовать Pillow для записи массива в файл png, а затем установить виджет GtkImage из файла. Поскольку я хочу обновлять по мере настройки ползунка, это слишком медленно.
import gi
from PIL import Image
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk, GdkPixbuf
#Load the gtk image widget from a file
#Get pixel array
pb = self.image_widget.get_pixbuf()
h = pb.get_height()
w = pb.get_width()
pixels = pb.get_pixels()
pixels = np.frombuffer(pixels, dtype=np.uint8)
pixels = pixels.reshape((h,w,3))
# Apply the threshold
self.pixels = pixels
self.pixels = (self.pixel>thresh)*255
im = Image.fromarray(np.uint8(self.pixels))
im.save('temp.png')
self.image_widget.set_from_file('temp.png')
self.image_widget.show()