考慮到這張圖片:

我想用紅色改變與黑色像素接觸的白色像素集,這樣:

我嘗試在以下代碼中使用此代碼python:
import numpy as np
from PIL import Image
im = Image.open('image.png')
data = np.array(im)
r1, g1, b1 = 255, 255, 255 # Original value
r2, g2, b2 = 0, 0, 255 # Value that we want to replace it with
red, green, blue = data[:,:,0], data[:,:,1], data[:,:,2]
mask = (red == r1) & (green == g1) & (blue == b1)
data[:,:,:3][mask] = [r2, g2, b2]
im = Image.fromarray(data)
但是我把所有的白色像素都改成了紅色。但也可能是一個UNIX方法建議。
uj5u.com熱心網友回復:
請發布您的輸入影像的無損版本。有損影像會修改像素值,產生影響處理的偽影。我重新創建了您的影像并將其保存為
白色背景:

img2:

紅色周圍的黑色邊距是因為原始影像是JPEG而不是PNG(顏色不純),紅色不是純紅色。
我們可以使用以下代碼修復它(代碼不是很優雅)......
red = img[:, :, 2]
r = np.median(img[:, :, 2][red > 50])
g = np.median(img[:, :, 1][red > 50])
b = np.median(img[:, :, 0][red > 50])
mask = np.logical_and(img[:, :, 0] > 100, img2[:, :, 0] <= 100)
img3 = img2.copy()
img3[:, :, 2][mask] = r
img3[:, :, 1][mask] = g
img3[:, :, 0][mask] = b
img3[:, :, 2] = cv2.morphologyEx(img3[:, :, 2], cv2.MORPH_CLOSE, np.ones((3, 3), np.uint8))
img3[:, :, 1] = cv2.morphologyEx(img3[:, :, 1], cv2.MORPH_OPEN, np.ones((3, 3), np.uint8))
img3[:, :, 0] = cv2.morphologyEx(img3[:, :, 0], cv2.MORPH_OPEN, np.ones((3, 3), np.uint8))
cv2.imshow('img3', img3)
cv2.waitKey()
cv2.destroyAllWindows()
結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453328.html
標籤:Python opencv Unix python成像库
上一篇:如何使用Symfony爬蟲組件和PHPUnit測驗表單提交的錯誤值?
下一篇:如何匹配模板透明影像opencv
