我需要在屏幕上或从活动窗口中的一些像素的颜色,我必须这样做迅速。我试过使用win32gui和ctypes/windll,但它们太慢了。所有这些程序获取的100个像素颜色:迅速得到一些像素的颜色在Python中屏幕上的Windows 7
import win32gui
import time
time.clock()
for y in range(0, 100, 10):
for x in range(0, 100, 10):
color = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x , y)
print(time.clock())
和
from ctypes import windll
import time
time.clock()
hdc = windll.user32.GetDC(0)
for y in range(0, 100, 10):
for x in range(0, 100, 10):
color = windll.gdi32.GetPixel(hdc, x, y)
print(time.clock())
每一种花费约1.75秒。我需要一个像这样的程序少于0.1秒。是什么让它如此缓慢?
我正在使用Python 3.x和Windows 7.如果您的解决方案需要使用Python 2.x,请将我链接到显示如何安装Python 3.x和2.x的文章。我看了看,但无法弄清楚如何做到这一点。
谢谢!
所以,它听起来就像你苏提示我捕捉整个屏幕(比如说位图),然后从中获取像素值。这听起来像是它可能是Python图像库(PIL)(它需要python 2)的工作。x)或ImageMagick(我不确定它需要什么版本的python)。如果有人有任何建议,请随时登录。 – dln385 2010-09-27 18:45:59
是的,基本上你需要使用与.net等价的CopyFromScreen方法,在Bitmap类中可以通过其坐标访问单个像素。是的,以前人们已经这样做了,并且有很多可以导入的库,选择最适合您的库。 – Margus 2010-09-27 19:21:53