使用Python和Numpy将2个图像混合为1

yod*_*ish 4 python opencv numpy

我需要将2个numpy.ndarrays作为参数并逐个像素地迭代它们,添加2个值并除以2.

基本上创建两者的混合图像并将其作为numpy.ndarray返回

这是我想出来的,但可以真正使用一些建议.

    def blendImages(image1, image2):            
        it1 = np.nditer(image1)
        it2 = np.nditer(image2)            
        for (x) in it1:
            for (y) in it2:
                newImage = (x + y) / 2
        return newImage
Run Code Online (Sandbox Code Playgroud)

ebo*_*ebo 6

只要数组大小相同:

newImage = 0.5 * image1 + 0.5 * image2
Run Code Online (Sandbox Code Playgroud)

  • 你所做的硬编码值(`0.5`)可能运行得更快,但一般来说,这可以对任意数量的图像进行`def blendImages(*images):return np.mean(images,axis = 0 )` (3认同)
  • 结果图像充满白色为什么会发生这种情况? (2认同)

Mik*_*iki 6

您可以使用OpenCV函数addWeighted,如:

 cv2.addWeighted(img1,0.5,img2,0.5,0)`
Run Code Online (Sandbox Code Playgroud)