У меня есть скрипт, делающий скриншот каждые 1 сек, и мне нужно округлить все пиксели одного и того же цвета, но с разным оттенком до одинакового значения rgb.Его 130.000 пикселей, поэтому мне интересно, что будет лучшим для этой работы.Кроме того, я не очень хорош и GDK, и я не могу, если мне нужно округлить эти пиксели аритметическим способом или я могу, возможно, использовать некоторые функции для захвата экрана уже с уменьшенной цветовой картой, что я получу только чистые цвета.Я пытался протестировать некоторые функции, такие как sature и pixelete, которые с использованием pixelete помогли мне приблизить значения этих пикселей, но они все равно были разного оттенка.
Я знаю, как округлить эти цвета один за другим, но естьдля многих, и мне нужно сделать это быстро.Попытка найти что-то в numpy, чтобы сделать это, но pb.get_pixels_array () возвращает 2D-массив, и я не нашел ничего, что могло бы мне помочь
Есть код, который я использовал для захвата одного пикселя, но в основном коде яиспользовать таким же образом, но я фиксирую 130 000 пикселей за раз, поэтому это 430x320 и возвращаю его с помощью pb.get_pixels_array ()
def getwebsafe(r,g,b):
rw = 51 * ((int(r)+25)//51)
gw = 51 * ((int(g)+25)//51)
bw = 51 * ((int(b)+25)//51)
return (rw,gw,bw)
def pix(x, y):
x = int(x)
y = int(y)
w = gtk.gdk.get_default_root_window()
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, 434, 322)
cm = w.get_colormap()
pb = pb.get_from_drawable(w, cm, x, y, 0, 0, 1, 1)
pb.saturate_and_pixelate(pb,1,True)
returne = pb.pixel_array[0][0]
returne = getwebsafe(str(returne[0]),str(returne[1]),str(returne[2]))
return returne