如何从结构数组中获取值?
5次浏览(过去30天)
显示旧的注释
亲爱的Matlab专家:
我需要别人的帮助。
我想从结构数组(stat)中获得位置值。然后用它们来裁剪大小为64x64的图像。
这是我的一步:
- 检测图像的质心
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])
这是质心位置的结构数组值。
这就是我想做的
谢谢
汉
0评论
接受的答案
马特·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)
马特·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)