Округление значения RGB всех пикселей до четного оттенка - PullRequest
1 голос
/ 23 июня 2019

У меня есть скрипт, делающий скриншот каждые 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
...