更改 python 中超像素的颜色
change the color of superpixels in python
我正在尝试更改 black/white 中图像的超像素颜色并保存新的 white/black 图像。
我使用切片作为超像素算法:
segments = slic(img, n_segments = 100, sigma = 5)
我尝试遍历片段中的每个唯一超像素,并将值设置为白色 255 和黑色 0。
另外,我有一个包含值 0 和 1 的数组 y
。此 y
数组的长度与唯一超像素的数量相同,并且超像素的新颜色与此数组相关.
这是我尝试过的:
for i in np.unique(segments):
mask = np.zeros(image.shape[:2], dtype="uint8")
if y[i] == 1:
mask[segments == i] = 255
因此,如果 y
位置 i
处的值为 1
,则“i”超像素的颜色应为白色。否则,超像素应该是黑色的。
上面的代码不工作,我没有错误,但是掩码中的所有值都是 0,并且应该还有一些 255(对于白色)。
这对我有用:
vis = np.zeros(image.shape[:2], dtype="uint8")
for ii in np.unique(segments):
# construct a mask for the segment
print("[x] inspecting segment {}, for {}".format(ii, 57))
mask2 = np.ones(image.shape[:2], dtype="uint8")
if pred[ii] == 1:
mask2[segments == ii] = 255
vis[segments == ii] = 255
你实际上可以用你的超像素直接索引 y
数组:
mask = y[segments]
或者,如果您想确保获得 0/255 uint8:
yu8 = np.where(y == 1, 255, 0).astype(np.uint8)
mask = yu8[segments]
是的,NumPy 很棒!您可以在此处阅读有关 NumPy 索引的更多信息:
我正在尝试更改 black/white 中图像的超像素颜色并保存新的 white/black 图像。 我使用切片作为超像素算法:
segments = slic(img, n_segments = 100, sigma = 5)
我尝试遍历片段中的每个唯一超像素,并将值设置为白色 255 和黑色 0。
另外,我有一个包含值 0 和 1 的数组 y
。此 y
数组的长度与唯一超像素的数量相同,并且超像素的新颜色与此数组相关.
这是我尝试过的:
for i in np.unique(segments):
mask = np.zeros(image.shape[:2], dtype="uint8")
if y[i] == 1:
mask[segments == i] = 255
因此,如果 y
位置 i
处的值为 1
,则“i”超像素的颜色应为白色。否则,超像素应该是黑色的。
上面的代码不工作,我没有错误,但是掩码中的所有值都是 0,并且应该还有一些 255(对于白色)。
这对我有用:
vis = np.zeros(image.shape[:2], dtype="uint8")
for ii in np.unique(segments):
# construct a mask for the segment
print("[x] inspecting segment {}, for {}".format(ii, 57))
mask2 = np.ones(image.shape[:2], dtype="uint8")
if pred[ii] == 1:
mask2[segments == ii] = 255
vis[segments == ii] = 255
你实际上可以用你的超像素直接索引 y
数组:
mask = y[segments]
或者,如果您想确保获得 0/255 uint8:
yu8 = np.where(y == 1, 255, 0).astype(np.uint8)
mask = yu8[segments]
是的,NumPy 很棒!您可以在此处阅读有关 NumPy 索引的更多信息: