如何解决如何加快图像中像素的循环?
我正在将图像作为 numpy 数组处理。我有一个面具,我正在根据面具(也是一个数组)编辑图片。目前,我正在遍历每个像素并将白色图像中的相应像素更改为原始图像的值(在这种情况下称为裁剪数组)。似乎应该有一种方法可以说像 white1=cropped array where mask==True 这样的东西。我认为这可能会加快这个过程,因为我正在处理这么多图像。这可能吗?我会尝试做一个简单的例子。
mask=[[True,True,False,False],[True,True]]
white1=[[[255,255,255],[255,255]],[[255,255]]]
cropped_array=[[110,200,17],[110,17]],[[110,17]]]
h,w = mask.shape
for i in range(h):
for j in range(w):
if mask[i][j]==True:
white1[i][j] = cropped_array[i][j]
解决方法
您可以通过简单地乘以掩码来选择性地选择元素。
import numpy as np
mask=[[True,True,False,False],[True,True]]
white1=[[[255,255,255],[255,255]],[[255,255]]]
cropped_array=[[[110,200,17],[110,17]],[[110,17]]]
mask = np.array(mask)
white1 = np.array(white1)
cropped_array = np.array(cropped_array)
h,w = mask.shape
for i in range(h):
for j in range(w):
if mask[i][j]==True:
white1[i][j] = cropped_array[i][j]
white = (cropped_array * mask[...,None]) + (white1 * ~mask[...,None])
print(np.allclose(white,white1))
给出 True
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。