検出器のオブジェクト(複数)の座標の格納について

4 views (last 30 days)
Sato
Sato on 2 Jan 2020
Commented: Sato on 3 Jan 2020
matlabのbbox(矩形)で複数のオブジェクトを検知し、中心の座標を取りたいです。
その際に、bbox内では
>> bbox
bbox =
340 130 136 332
570 54 146 356
のように値が格納されると思います(N行4列)。
x=bbox(1,1);
y=bbox(2,1);
・・・
と行いたいですが、複数のオブジェクトで複数行値が格納されている場合はどのようにしたら良いでしょうか。
(試しにx=bbox(1),y=bbox(2),w=bbox(3),h=bbox(4)と行ってみたところ、340,570,130,54と縦に値を格納してしまいました...)
下のリンクの複数オブジェクト検知という感じのイメージになります。
よろしくお願いいたします。

Accepted Answer

Kenta
Kenta on 3 Jan 2020
こんにちは、bboxes(1,:)などとすれば、上から1段目の、左から右までの値をすべて取ることができます。
下の例を見ると、各bboxがそれぞれ取得できることが見て取ることができます。
I=imread('onion.png');
I=imresize(I,3);
bboxes=[240 130 136 232
270 54 146 256
92 73 290 40
153 78 67 139];
figure;
for i=1:4
subplot(2,2,i)
annotation=sprintf('box%d',i);
imshow(insertObjectAnnotation(I, 'rectangle', bboxes(i,:), annotation,'LineWidth',8,'FontSize',30))
end
result.JPG
  3 Comments
Kenta
Kenta on 3 Jan 2020
size(bboxes,1)
で、bboxesの縦の数、つまり検出した物体の数を知ることができます。bboxのサイズで、かつ1番目の方向(つまり縦方向)と考えてください。
そのため、
for i=1:size(bboxes,1)
bboxes(i,1)
bboxes(i,2)
bboxes(i,3)
bboxes(i,4)
end
とすれば、すべての要素を確認できます。
Sato
Sato on 3 Jan 2020
ご回答ありがとうございます。
for i=1:size(bboxes,1)
x= bboxes(i,1)
y= bboxes(i,2)
w= bboxes(i,3)
h= bboxes(i,4)
end
で試させて頂きます。
ご丁寧にありがとうございます。

Sign in to comment.

More Answers (0)

Products


Release

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!