我怎样才能在 PIL 图像中没有红色像素和黑色像素
how can i get no of red pixels and no of black pixels in PIL image
from PIL import ImageGrab
pil_img=ImageGrab.grab([0,0,1000,1000])
现在我想在两个单独的 variables.So 中没有红色像素和黑色像素,我应该如何进行 pil_img
使用pil_img.getpixel((x, y))
,或pil_img[x, y]
。
如果您不自己在所有像素上编写循环,速度会快得多。
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, 0): 735408, (248, 8, 11): 8700, (245, 9, 9): 7200, ...)
Counter({(0, 0, 0): 5992, (248, 8, 9): 1639, (3, 0, 0): 33, (0, 6, 0): 23, ...)
您有两个以上的像素值是由于 JPG 人工制品造成的。您可以编写一些自定义逻辑来查看像素是否更像黑色或红色,并将它们也算作那些。
from PIL import ImageGrab
pil_img=ImageGrab.grab([0,0,1000,1000])
现在我想在两个单独的 variables.So 中没有红色像素和黑色像素,我应该如何进行 pil_img
使用pil_img.getpixel((x, y))
,或pil_img[x, y]
。
如果您不自己在所有像素上编写循环,速度会快得多。
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, 0): 735408, (248, 8, 11): 8700, (245, 9, 9): 7200, ...)
Counter({(0, 0, 0): 5992, (248, 8, 9): 1639, (3, 0, 0): 33, (0, 6, 0): 23, ...)
您有两个以上的像素值是由于 JPG 人工制品造成的。您可以编写一些自定义逻辑来查看像素是否更像黑色或红色,并将它们也算作那些。