我需要获取屏幕上或活动窗口中某些像素的颜色,并且需要快速获取。我试过使用win32gui和ctypes/windl,但它们太慢了。每个程序的颜色都是100像素:
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秒。怎么这么慢?
我正在使用Python3.x和Windows7。如果您的解决方案要求我使用Python2.x,请链接到一篇文章,介绍如何安装Python3.x和2.x。我看了看,但不知道怎么做。
谢谢!
多亏了马格斯的指导,我在提取像素信息之前集中精力获取图像。这里有一个使用Python Imaging Library (PIL)的可行解决方案,它需要Python 2.x
我觉得没有比这更简单的了。这(平均)需要0.1秒,比我想要的慢一点,但足够快。
至于同时安装了Python 3.x和2.x,我将其分成了一个new question。我还是有一些问题,但它通常是有效的。
我有同样的问题,并且解决了它(in Java,in C#)。解决方案背后的主要思想是从screen获取pixel速度很慢,您无法修复它。但是当你需要一些像素时,你可以同时得到一堆像素。
获得64像素所需的时间是98倍。
这比一直使用
getpixel
要好,而且工作速度更快。引用:Image.load
相关问题 更多 >
编程相关推荐