Skimage regionprops功能的(area,euler_number)尺寸在Python中不正确

我有1797个Mnist图像,我需要为其提取两个特征(FilledArea,EulerNumber)。我知道如何在Matlab中做到这一点。我的特征矩阵在Matlab中具有(并且是正确的)大小为1797 * 2(每个尺寸为1797)

matlab的代码(正常工作)

for i = 1:2*N
    img = regionprops(BW(:,:,i),'FilledArea','Solidity');
    features(i,1) = img.EulerNumber;
    features(i,2) = img.FilledArea;
    clear img;
end

我想用Skimage regionprops在python中做同样的事情,但是对于1797张图像,我得到了29350 * 2个功能(每个功能为29350个道具),根据我的理解,应该是1797 * 2

python代码(无法正常工作)

digits = datasets.load_digits()
label_img = digits.images
rps = regionprops(label_img,cache=False)
print(len([r.area for r in rps]))  #29350
print(len([r.euler_number for r in rps]))  #29350

我的方法可能有什么问题?为什么每个功能都有29350个元素而不是1797个?

leemr66 回答:Skimage regionprops功能的(area,euler_number)尺寸在Python中不正确

就像在Matlab中需要for循环来计算每个图像的属性一样,在Python中也需要一个for循环来执行相同的操作。当前,您正在计算形状为(1797,8,8)的单个 3D 图像的属性,而不是形状为(8,8)的1797 2D图像的属性。以下是您所需要的等效Python代码:

features = []
for image in digits.images:
    labels = (image > 0).astype(int)  # only one object in the image
    props = regionprops(labels,image)[0]  # only one object
    features.append((props.euler_number,props.filled_area))
本文链接:https://www.f2er.com/3106252.html

大家都在问