簡體   English   中英

如何更改圖像中指定像素的顏色?

[英]How do you change the color of specified pixels in an image?

我希望能夠根據其RGB值檢測像素的某個區域,並將其更改為其他顏色(不是黑/白)。

我嘗試在代碼中更改這些值,但是我得到的圖像始終顯示黑色像素替換指定位置: pixelMap[i,j]= (255,255,255)

from PIL import Image
im  = Image.open('Bird.jpg')
pixelMap = im.load()

img = Image.new(im.mode, im.size)
pixelsNew  = img.load()

for i in range(img.size[0]):
    for j in range(img.size[1]):
        toup = pixelMap[i,j]
        if(int(toup[0]>175) and int(toup[1]<100 and int(toup[2])<100) ):
             pixelMap[i,j]= (255,255,255)
        else:
             pixelsNew[i,j] = pixelMap[i,j]
img.show()

您會發現使用Python循環遍歷圖像確實很慢,並且應該養成使用Numpy或優化的OpenCV或skimage代碼的習慣。

因此,從此圖像開始:

在此處輸入圖片說明

from PIL import Image
import numpy as np

# Open image
im = Image.open('bird.jpg')

# Make into Numpy array
imnp = np.array(im)

# Make all reddish pixels white
imnp[(imnp[:,:,0]>170) & (imnp[:,:,1]<100) & (imnp[:,:,2]<100)] = [255,255,255] 

 # Convert back to PIL and save
Image.fromarray(imnp).save('result.jpg')

在此處輸入圖片說明

它看起來像一個小錯誤:

代替: pixelMap[i,j]= (255,255,255)
用法: pixelsNew[i,j] = (255,255,255)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM