gpt4 book ai didi

python-3.x - 将图像放在另一个图像之上的更有效方法 - OpenCV Python3

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:53 24 4
gpt4 key购买 nike

我编写了一个函数,它获取两个大小相等的图像并返回一个大小相同的组合图像,这样所有黑色像素(其中 BGR 值为 [0, 0, 0] ) 第一张图片的 像素将替换为第二张图片的像素。

我的代码是这样的:

def combine(img1, img2):
retImage = np.zeros((img1.shape[0], img1.shape[1], 3), dtype=np.uint8)
for x in range(img1.shape[0]):
for y in range(img1.shape[1]):
if (0 not in img1[x][y]):
retImage[x][y] = img1[x][y]
else:
retImage[x][y] = img2[x][y]
return retImage

显然这非常慢,特别是因为我正在按顺序处理多个 4k 图像。有没有更有效的方法来做到这一点(最好使用 OpenCV 函数,如阈值/掩码)?

最佳答案

以下代码使用 Numpy 操作执行您想要的操作,这应该比 Python 循环更有效:

pixel_has_zero = np.any(img1 == 0, axis=2, keepdims=True)    
retImage = np.where(pixel_has_zero, img2, img1)

此代码假设 img1img2 大小相同。如果不是这种情况,您需要事先切片 img2

关于python-3.x - 将图像放在另一个图像之上的更有效方法 - OpenCV Python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51293659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com