我正在用 python 编写一个程序,该程序使用的函数与addWeighted
openCV 中的函数。不同之处在于,它实际上并不添加表示图像的 numpy 数组,而是采用在任何特定坐标处更亮的像素并使用该值。
然而,我发现,尽管这些函数做的事情非常相似,addWeighted
功能要快得多。所以我的问题是,如何修改当前的解决方案以同样快?有什么办法我可以使用multiprocessing
模块,或者类似的东西?
这是代码:
image = np.zeros(image_1.shape)
for row_index, row in enumerate(image_1):
for col_index, col in enumerate(row):
pixel_1 = image_1[row_index, col_index]
pixel_2 = image_2[row_index, col_index]
sum_1 = int(pixel_1[0]) + int(pixel_1[1]) + int(pixel_1[2])
sum_2 = int(pixel_2[0]) + int(pixel_2[1]) + int(pixel_2[2])
if sum_2 > sum_1:
image[row_index, col_index] = pixel_2
else:
image[row_index, col_index] = pixel_1
Where image_1
and image_2
都是表示图像的 numpy 数组,两者具有相同的形状(720, 1280, 3)
.
一种矢量化方法是 -
mask = image_2.astype(int).sum(-1) > image_1.astype(int).sum(-1)
out = np.where(mask[...,None], image_2, image_1)
Steps :
注意:或者,我们也可以使用keepdims=True
保留号码。求和时的暗淡,从而避免在下一步中扩展暗淡。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)