gpt4 book ai didi

python - 从 label_image 获取图像中对象的边缘

转载 作者:行者123 更新时间:2023-12-01 06:39:47 25 4
gpt4 key购买 nike

我有一个label_image,它实际上是一个数组,它将图像的每个像素分配给现实生活中的对象。例如,如果 label_image 看起来像这样

0,0,0,0,0,0,0,0
0,1,1,1,0,0,0,0
0,1,1,1,0,0,0,0
0,1,1,1,0,2,0,0
0,0,0,0,2,2,2,0
0,0,0,0,0,2,0,0
0,0,0,0,0,0,0,0

那么可以理解,我的图片显示了两个物体,一个是方形的(靠近左上角,标记为第一个物体),另一个是菱形的(靠近右下角,标记为第一个物体)第二个对象)用零表示背景。

如何从 label_image 获取对象的边缘/边界/轮廓?在这个过于简单的示例中,我希望最终得到:

0,0,0,0,0,0,0,0
0,1,1,1,0,0,0,0
0,1,0,1,0,0,0,0
0,1,1,1,0,2,0,0
0,0,0,0,2,0,2,0
0,0,0,0,0,2,0,0
0,0,0,0,0,0,0,0

我正在使用Python 3

最佳答案

你可以使用scipy的binary_erosion来做到这一点:


import numpy as np
from scipy import ndimage

eee = np.array([
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 0, 0, 0, 0],
[0, 1, 1, 1, 0, 0, 0, 0],
[0, 1, 1, 1, 0, 2, 0, 0],
[0, 0, 0, 0, 2, 2, 2, 0],
[0, 0, 0, 0, 0, 2, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]])

mask = ndimage.binary_erosion(eee.tolist())
eee[mask]=0

输出:

array([[0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 0, 0],
[0, 1, 1, 1, 0, 2, 0, 0],
[0, 0, 0, 0, 2, 0, 2, 0],
[0, 0, 0, 0, 0, 2, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]])

关于python - 从 label_image 获取图像中对象的边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59507132/

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