2024-10-08 23:23:19 发布
网友
所以我有一个灰色的(2D)图像类型np.数组里面有很多物体。每个对象由其具有相同值的像素定义,例如1.23e15。在
我现在想给图像加上标签,也就是说,我想把某个值的所有像素(例如上面值1.23e15的200个像素)重新缩放为一个整数。 除了背景值为零之外,我希望每个区域都设置为范围内的值之一(1,nbr_of_regions_in_img+1)。在
如果没有明显的循环解决方案,我该如何高效地完成这一次(我有成百上千张图片)?在
Scipy有一个用于图像处理和分析的extensive library。您要查找的函数可能是^{}
import scipy.ndimage import numpy as np pix = np.array([[0,0,1,1,0,0], [0,0,1,1,1,0], [1,1,0,0,1,0], [0,1,0,0,0,0]]) mask_obj, n_obj = scipy.ndimage.label(pix)
输出为您提供了一个带标签的掩码,每个标识的对象具有不同的编号,以及标识的对象的数量。在
您还可以使用structure参数定义应计为相邻单元格的内容:
structure
s = np.asarray([[1,1,1], [1,1,1], [1,1,1]]) mask_obj, n_obj = scipy.ndimage.label(pix, structure = s) >>>print(n_obj) >>>1 >>>print(mask_obj) >>>[[0 0 1 1 0 0] [0 0 1 1 1 0] [1 1 0 0 1 0] [0 1 0 0 0 0]]
如果不同的物体互相接触,也就是说它们没有被零值分开,就会出现困难。在
Scipy有一个用于图像处理和分析的extensive library。您要查找的函数可能是^{}
输出为您提供了一个带标签的掩码,每个标识的对象具有不同的编号,以及标识的对象的数量。在
^{pr2}$您还可以使用
structure
参数定义应计为相邻单元格的内容:如果不同的物体互相接触,也就是说它们没有被零值分开,就会出现困难。在
相关问题 更多 >
编程相关推荐