替换照片的所有颜色,但不包括现有的黑白像素PYTHON

时间:2019-03-16 00:36:39

标签: python replace pixel

我是python的初学者,我想将照片的所有像素更改为白色的方法,除了照片中已有的白色或黑色像素。我尝试使用PIL,但找不到。 谢谢!

2 个答案:

答案 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)