from PIL import ImageGrab
pil_img=ImageGrab.grab([0,1000,1000])
最佳答案
如果你不在所有像素上自己编写循环,它会快得多.
import os.path
from collections import Counter
from PIL import Image
path_to_file = os.path.join('..','..','img','9BLW9.jpg')
# Count the number of occurrences per pixel value for the entire image
img = Image.open(path_to_file)
pixels = img.getdata()
print(Counter(pixels))
# Count the number of occurrences per pixel value for a subimage in the image
img = img.crop((100,100,200,200))
pixels = img.getdata()
print(Counter(pixels))
因此:
Counter({(248,8,9): 1002251,(0,0): 735408,(248,11): 8700,(245,9,9): 7200,...)
Counter({(0,0): 5992,9): 1639,(3,0): 33,6,0): 23,...)
您有两个以上像素值的事实是由JPG伪影造成的.您可以编写一些自定义逻辑来查看像素是否更像黑色或红色,并将它们计算为那些.