如何从结构数组中获取值?

5次浏览(过去30天)
珍妮弗NG
珍妮弗NG 2022年5月13日
评论道: 马特·J 2022年5月13日
亲爱的Matlab专家:
我需要别人的帮助。
我想从结构数组(stat)中获得位置值。然后用它们来裁剪大小为64x64的图像。
这是我的一步:
  1. 检测图像的质心
2.使用质心位置的值并将原始图像裁剪为许多64x64图像。 (这一步我卡住了,因为我不知道如何得到
质心位置值)。
我的代码:
步骤1质心检测
我= imread (“2 _mask.png”
Ibw = im2bw(I);
stat = regionprops(Ibw,“重心”);
imshow(我);持有
X = 1:数值(stat)
情节(stat (x) .Centroid(1),统计(x) .Centroid (2),“+”、线宽= 2);
结束
持有
步骤2裁剪图像
I,[?? ?-32 ? ?-32 63 63])
这是质心位置的结构数组值。
这就是我想做的
谢谢

接受的答案

马特·J
马特·J 2022年5月13日
编辑:马特·J 2022年5月13日
我= imread (“//www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/996660/2_mask.png”);
Ibw = im2bw(I);
stat = regionprops(Ibw,“图像”);
i = 1:元素个数(统计)
I =统计(我).Image;
我(端+ 1:64端+ 1:64)= 0;
s = regionprops(我“重心”);
我= imtranslate 32-s.Centroid);
如果~ isequal(大小(我),(64、64))
win = centerCropWindow2d(size(I),[64,64]);
I = imcrop(我,赢);
结束
stat(我).Image =我;
结束
蒙太奇({统计。图像},“回来”' w '“Bor”5)
1评论
珍妮弗NG
珍妮弗NG 2022年5月13日
编辑:珍妮弗NG 2022年5月13日
非常感谢。
我想使用此图像中的质心位置来裁剪另一张图像,然后保存裁剪区域到单独的文件。
你能帮我修改一下这个代码吗?

登录评论。

更多答案(1)

马特·J
马特·J 2022年5月13日
我想使用此图像中的质心位置来裁剪另一张图像,然后保存裁剪区域到单独的文件。
我= imread (“//www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/996660/2_mask.png”);
Ibw = im2bw(I);
stat = regionprops(Ibw,“重心”);
N =元素个数(统计);
i = 1: N
stat(我).BoundingBox = [stat(我).centroid - 32.5, 64, 64];
结束
现在你可以用下面的方法从任意图像中提取裁剪过的子图像,尽管我使用的是原始图像 Ibw 只是为了说明。
子图象= arrayfun (@ (s) imcrop (s.BoundingBox Ibw)统计,“大学”, 0);您可以在这里使用新映像
蒙太奇(子图象,“回来”' w '“Bor”5)
5个评论

登录评论。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!