在Python或C ++中获取像素颜色的最快方法?

时间:2011-01-29 12:39:31

标签: c++ python tkinter pixel blur

我正在尝试为我正在制作的透明Tkinter小部件添加模糊效果。

我使用此行(代码段)

使小部件部分透明
self.attributes("-alpha", 0.85)

为了添加我想要的效果,我需要获取小部件中每个像素的RGB值。看到窗口小部件只是部分不透明,我不能使用 .cget 方法,因为它返回它的填充RGB值(它在部分透明之前的颜色),而不是它的实际RGB值。

我目前正在使用此功能(摘录)

def get_pixel_colour(self, i_x, i_y):
    i_desktop_window_id = win32gui.GetDesktopWindow()
    i_desktop_window_dc = win32gui.GetWindowDC(i_desktop_window_id)
    long_colour = win32gui.GetPixel(i_desktop_window_dc, i_x, i_y)
    i_colour = int(long_colour)
    return (i_colour & 0xff), ((i_colour >> 8) & 0xff), ((i_colour >> 16) & 0xff)

然而,对于我的目的来说,太慢了。有没有更快的方法来获得像素颜色?

修改

如果Python对于此目的而言太慢,我也可以使用C ++。 我只需要在不同的x,y坐标处获得像素的RGB值。

1 个答案:

答案 0 :(得分:2)

您可能希望查看可以调用此类

的Python图像库
import Image
im = Image.open("name_of_file.jpg")
list_of_pixels = list(im.getdata())
print list_of_pixels[0]

那将输出RGB格式的第一个像素,如(255,255,255) 它非常快,但我相信它不会超过C ++