我正在尝试用另一张图片的像素替换一张图片中的所有黑色像素...

这是我到目前为止的代码-

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/

10-12 19:25