我正在尝试用另一张图片的像素替换一张图片中的所有黑色像素...
这是我到目前为止的代码-
imgFront = cv2.imread('withoutbackground.jpg')
imgBack = cv2.imread('background.jpg')
height, width = img.shape[:2]
resizeBack = cv2.resize(imgBack, (width, height), interpolation = cv2.INTER_CUBIC)
for i in range(width):
for j in range(height):
pixel = imgFront[j, i]
if pixel == [255, 255, 255]:
imgFront[j, i] = resizeBack[j, i]
但是我收到一条错误消息,说这部分语法不正确-
pixel = imgFront[j, i]
这很奇怪,因为我正在看的是opencv文档,这就是它说的那样。
最佳答案
您的想法是正确的,但是有一些小错误。
首先,在第3行中,它应该是imgFront
的形状,对吗?:
height, width = imgFront.shape[:2]
第二,在
if pixel == [255, 255, 255]:
行中,您应该将其更改为:np.all(pixel == [0, 0, 0])
因为黑色应该是(0,0,0)
总而言之,以下代码对我来说很好用:
import cv2
import numpy as np
imgFront = cv2.imread('withoutbackground.jpg')
imgBack = cv2.imread('background.jpg')
height, width = imgFront.shape[:2]
resizeBack = cv2.resize(imgBack, (width, height), interpolation = cv2.INTER_CUBIC)
for i in range(width):
for j in range(height):
pixel = imgFront[j, i]
if np.all(pixel == [0, 0, 0]):
imgFront[j, i] = resizeBack[j, i]
关于python - 用另一张图片替换黑色背景,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38152940/