Python:如何检测屏幕中的任何更改

时间:2013-12-14 07:24:50

标签: python

是否有任何代码可以检测是否有任何像素颜色变化?

我想要做的是检测区域中的任何变化(如果像素

因此,如果该区域中任何像素的颜色发生变化,它会提醒我。

抱歉我的英语不好。

2 个答案:

答案 0 :(得分:2)

要查找连续屏幕截图之间的确切差异:

#!/usr/bin/env python
from PIL import ImageChops # $ pip install pillow
from pyscreenshot import grab # $ pip install pyscreenshot

im = grab()
while True: # http://effbot.org/zone/pil-comparing-images.htm
    diff = ImageChops.difference(grab(), im)
    bbox = diff.getbbox()
    if bbox is not None: # exact comparison
        break

print("bounding box of non-zero difference: %s" % (bbox,))
# superimpose the inverted image and the difference
ImageChops.screen(ImageChops.invert(im.crop(bbox)), diff.crop(bbox)).show()
input("Press Enter to exit")

答案 1 :(得分:0)

直观的解决方案可能如下:

1) Take the bytes of the region you want to check for changes
2) Convert them to a string of bytes
3) Use an hash function from the hashlib module
4) Compare the obtained hash with the previous one
   (if they're different something has changed)

这种方法也检测光线条件下的任何变化,因此可能不是您想要的。但这真正检测到图像部分中的 ANY change

还有一些像PyOpenCV这样的库绑定可以做到这一点以及更多。