我是python的初学者,我想将照片的所有像素更改为白色的方法,除了照片中已有的白色或黑色像素。我尝试使用PIL,但找不到。 谢谢!
答案 0 :(得分:1)
假设您有权使用matplotlib并愿意使用它:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# read the image pixels and saves them as a numpy array
image = mpimg.imread('<your image>')
# see original image (just for testing)
plt.imshow(image)
plt.show()
# loop through all pixels, and replace those that are not strict white or black with white
for x in range(image.shape[0]):
for y in range(image.shape[1]):
if (image[x,y]!=0).all() and (image[x,y]!=1).all():
image[x,y] = [1,1,1]
# see modified image (to make sure this is what you need)
plt.imshow(image)
plt.show()
# save image
mpimg.imsave('<new name>',image)
您可能可以将其向量化,但是我发现这更具可读性,具体取决于您的性能要求。
另外,请确保输入为[0,1]格式。如果它在[0,255]中,则用1
s修改上面的255
s。
编辑:此解决方案适用于RGB,没有alpha。如果您有Alpha,则可能需要根据需要进行修改。
希望这会有所帮助。
答案 1 :(得分:1)
我想将照片的所有像素更改为白色的方式,除了照片中已经存在的白色或黑色像素。
所以基本上您想将除黑色以外的所有像素都更改为白色,对吧?如果是这样,则可以进行以下工作(请注意:您的计算机上已安装cv2
lib)
import cv2
import numpy as np
img = cv2.imread('my_img.jpeg')
img[img != 0] = 255 # change everything to white where pixel is not black
cv2.imwrite('my_img2.jpeg', img)