我正在嘗試創建一個干擾集,我正在使用這個 for 回圈來做到這一點:
for mask in input_images:
img = Image.open(path mask)
print(mask)
width = img.size[0]
height = img.size[1]
for i in range(0, width): # process all pixels
for j in range(0, height):
data = img.getpixel((i, j))
img.putpixel((i, j), (0, 0, 0))
img.save(masks_path '/' mask[:-4] '.png')
print(masks_path '/' mask[:-4] '.png saved!')
它基本上拍攝每張影像,將每張影像的像素轉換為黑色,然后對其進行復制。但這是它在一段時間后拋出的錯誤:
Traceback (most recent call last):
File "/home/onur/PycharmProjects/masking-image/main.py", line 24, in <module>
img.putpixel((i, j), (0, 0, 0))
File "/home/onur/PycharmProjects/masking-image/venv/lib/python3.9/site-packages/PIL/Image.py", line 1794, in putpixel
value = self.palette.getcolor(value, self)
File "/home/onur/PycharmProjects/masking-image/venv/lib/python3.9/site-packages/PIL/ImagePalette.py", line 143, in getcolor
raise ValueError("cannot allocate more than 256 colors") from e
ValueError: cannot allocate more than 256 colors
我不明白為什么我會得到這個。我只參考一種顏色,即黑色。有沒有更快的方法來制作純黑色的影像副本?
uj5u.com熱心網友回復:
我不知道你為什么要用黑色填充影像,但這是一種方法:
from PIL import Image
# Load original image and convert to greyscale to save space
im = Image.open('input.png').convert('L')
# Fill with black
im.paste(0, box=(0,0,*im.size))
另一種方法是使用點處理函式使每個像素為零:
# Make greyscale and set all pixels equal to zero
im = im.convert('L').point(lambda i: 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/434247.html
下一篇:從影像的特定部分提取HUE值
