我有一组 250 张图像。从每张图像中我应用 SLIC 超像素算法。
现在,给定每幅图像的超像素,我想在图像2中跟踪图像1的超像素。
怎么做 ?
以图像 1 中的 5 个超像素蒙版为例,每个蒙版具有不同的颜色。假设我们采用超像素区域 1、2、3、4 和 5
color_maks=['red', 'green', 'white','yellow', 'orange']
我想在图 1 中获得这些掩码,在图 2 中获得它们对应的掩码。
我的问题 ?
1)如何为每个超像素蒙版分配不同的颜色并在图像 1 和 2 中显示它们?
2) 给定图像 1中超像素 1对应的掩码 1(红色),如何在 中显示其掩码。例如 :image 2
regions_image_1=[ 1,2,3,4,5]
corresponding_region_in_image_2=[7,2,5,8,12]
为了说明:
让我们将图像 1 中的区域 1 与mask_color='red'
. 在图 1 中显示它并在图 2中显示其对应的区域 7具有相同的mask_color='red'
我试过什么?
def display_mask_superpixel(image):
image = cv2.imread(image)
segments = slic(img_as_float(image), n_segments=50, sigma=5)
# show the output of SLIC
fig = plt.figure("Superpixels")
ax = fig.add_subplot(1, 1, 1)
ax.imshow(mark_boundaries(img_as_float(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)), segments))
plt.axis("off")
plt.show()
plt.cla()
plt.close()
for (i, segVal) in enumerate(np.unique(segments)):
# construct a mask for the segment
print("[x] inspecting segment %d" % (i))
mask = np.zeros(image.shape[:2], dtype="uint8")
mask[segments == segVal] = 255
# show the masked region
cv2.imshow("Mask", mask)
cv2.imshow("Applied", cv2.bitwise_and(image, image, mask=mask))
cv2.waitKey(0)
List_of images=images
for image in list_of_images:
display_mask_superpixel(image)
这里的限制是:
1) l 显示给定图像的所有超像素,但是我想只显示一些区域
2)所有面具都是白色的,但是我正在为每个面具寻找不同的颜色
3) 不要在图像 2 中处理跟踪图像 1 的超像素区域
希望清楚 谢谢