我对Matlab比较陌生,我无法在任何地方找到这些信息。我试图围绕二进制图像绘制一个边界框,然后调整它的大小。
stT = regionprops(binImT, 'BoundingBox');
binImT = imcrop(binImT, [stT(1).BoundingBox(1), ...
stT(1).BoundingBox(2), ...
stT(1).BoundingBox(3), ...
stT(1).BoundingBox(4)] );
resizImT = imresize(binImT,[400 640]);
当图像中有多个边界框时,我的问题出现了。我希望能够选择最大的边界框并调整其中的图像大小,但因为我无法找到stT
中有多少个字段(我不知道将在原始图像中创建多少个边界框)不能这样做。有没有一种简单的方法可以做到这一点,我错过了?
答案 0 :(得分:2)
我认为你只是在寻找:
numel(stT(1).BoundingBox)
如果您真的在stT中寻找te个字段名,请尝试:
numel(fieldnames(stT))
答案 1 :(得分:1)
您要查找的不是结构中的字段数,而是结构数组中的元素数。你可以这样做:
stT = regionprops(binImT, 'BoundingBox'); % compute the bounding boxes for all parts
sz = arrayfun( @(x) prod( x.BoundingBox(3:4) ), stT ); % compute BB area
[maxArea maxIdx] = max(sz); % pick element with maximal size
binImT = imcrop( binImT, st(maxIdx).BoundingBox ); % crop the largest part
为了完整性,获取结构中的字段数
numOfFields = numel( fieldnames(stT) );
获取结构数组中元素的数量
numOfElements = numel( stT );
答案 2 :(得分:0)
regionprops
的输出是一组结构。要查找此数组中的元素数,只需使用length
函数,就像任何其他数组一样:
length(stT)