如何更改只有白色像素的背景?
How can I change the background of only white pixels?
我有两张同样大小的灰度图,其中一张是这张:
我正在尝试为这张图片添加背景,即将白色像素更改为另一张图片中的相应像素。我设法做到的最好结果只是按位和两张照片的所有像素,但结果图片在詹姆斯邦德内部扭曲了。我还尝试在两张图片之间进行加权相加,但是当我增加 James Bond 图像的权重时,在生成的图像中可以看到白色像素。
要与第二张图片合并,请确保两张图片具有相同的尺寸(与您的尺寸相同)。然后可以将它们合并
import cv2
img_jb = cv2.imread('james_bond.png')
img_007 = cv2.imread('007_logo.png')
height, width, channels = img_jb.shape
img_007_resized = cv2.resize(img_007, (width, height), interpolation=cv2.INTER_CUBIC)
threshold = img_jb > 240
img_jb[threshold] = img_007_resized[threshold]
cv2.imwrite('james_bond_logo.png', img_jb)
给你:
numpy 允许您处理与给定条件匹配的数组索引。这具有将像素从背景图像复制到前景图像的效果,其中前景图像的值高于 240
.
我有两张同样大小的灰度图,其中一张是这张:
我正在尝试为这张图片添加背景,即将白色像素更改为另一张图片中的相应像素。我设法做到的最好结果只是按位和两张照片的所有像素,但结果图片在詹姆斯邦德内部扭曲了。我还尝试在两张图片之间进行加权相加,但是当我增加 James Bond 图像的权重时,在生成的图像中可以看到白色像素。
要与第二张图片合并,请确保两张图片具有相同的尺寸(与您的尺寸相同)。然后可以将它们合并
import cv2
img_jb = cv2.imread('james_bond.png')
img_007 = cv2.imread('007_logo.png')
height, width, channels = img_jb.shape
img_007_resized = cv2.resize(img_007, (width, height), interpolation=cv2.INTER_CUBIC)
threshold = img_jb > 240
img_jb[threshold] = img_007_resized[threshold]
cv2.imwrite('james_bond_logo.png', img_jb)
给你:
numpy 允许您处理与给定条件匹配的数组索引。这具有将像素从背景图像复制到前景图像的效果,其中前景图像的值高于 240
.