我正在尝试用另一个图像的像素替换图像中的所有黑色像素......
这是我到目前为止的代码 -
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文档,以及它是如何表达的。
答案 0 :(得分:0)
你的想法是正确的,但也有一些小错误。
首先,在第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]
答案 1 :(得分:-2)
我认为不可能使.jpg背景透明(见帖子:Transparent background in JPEG image。
您可以尝试使用PNG或GIF。