在Python或C++中获取像素颜色的最快方法?
我正在尝试给我制作的透明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 个回答
3
你可能想看看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++。