1

我想计算二值图像的连通分量的统计数据。在matlab中我们有

形状测量

    'Area'              'EulerNumber'       'Orientation'               
    'BoundingBox'       'Extent'            'Perimeter'          
    'Centroid'          'Extrema'           'PixelIdxList' 
    'ConvexArea'        'FilledArea'        'PixelList'
    'ConvexHull'        'FilledImage'       'Solidity' 
    'ConvexImage'       'Image'             'SubarrayIdx'            
    'Eccentricity'      'MajorAxisLength' 
    'EquivDiameter'     'MinorAxisLength' 

python中是否有任何等价物?

谢谢

4

3 回答 3

2

刚刚回答了一个类似的问题。使用regionpropsscikit-image 中的函数获取 Python 中的 CC 属性。

from scipy.ndimage.measurements import label
from skimage.measure import regionprops
label = label(img)
props = regionprops(label)
# get centroid of second object
centroid = props[1].centroid
# get eccentricity of first object
ecc = props[0].eccentricity

输出的形状测量值regionprops包括问题中上面列出的所有特征。'PixelIdxList'Python 中的等价物coordsregionprops.

于 2016-08-01T19:12:28.700 回答
0

我认为 openCV 的 cv2 接口可能是您正在寻找的。

于 2015-03-04T15:13:00.633 回答
0

正如我所知道的,当Matlab尝试'PixelIdxList'将数组视为一维数组然后计算索引但regionprops[i].coords带回一个数组数组(二维数组)时,每个内部数组都有两个元素,通过使用它们,您可以找到索引值.

像这样x = [[x1,y1],[x2,y2],....,[xn,yn]]。我尝试实现你可以使用的 Matlab 的确切代码,如果你想的话:

import skimage.measure as skme
import numpy as np

 
state = skme.regionprops(image)
for j in range(np.size(state)):
    s1 = state[j].coords
    flg = 0
    if np.size(s1,axis=0)>1:
        flg = 1
        InrList = []
        for k in range(np.size(s1,axis=0)):
            x1, y1 = state[j].coords[k]
            InrList.append(image[x1,y1])
        PixelIdxList.append(InrList)
    if flg == 0:
        x1, y1 = state2[j].coords[0]
        PixelIdxList.append(iamge[x1,y1])

# PixelIdxList is exact out put in Matlab
#STATS = regionprops(image,'PixelIdxList');          matlab
''' EACH ONE TEACH ONE '''
于 2020-07-15T13:58:59.210 回答