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

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と縦に値を格納してしまいました...)
下のリンクの複数オブジェクト検知という感じのイメージになります。
よろしくお願いいたします。

 采纳的回答

Kenta
Kenta 2020-1-3

0 个投票

こんにちは、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 个评论

こんにちは。
ご返信ありがとうございます。
bboxes=[240 130 136 232
270 54 146 256
92 73 290 40
153 78 67 139];
の部分で、4つのオブジェクトのx,y,w,hを格納しているかと思いますが、これらの値をそれぞれ書き出したい場合はどのようにしたら良いでしょうか(言葉足らずで申し訳ありません)。
1つめのx=...,y=...,w=...,h=...,
2つめのx=...,y=...,w=...,h=...,
3つめのx=...,y=...,w=...,h=...,
4つめのx=...,y=...,w=...,h=...、などいった形です。
(最終的には、1つめの矩形の中心座標、2つめの矩形の中心座標、3つめの矩形の中心座標・・・と求めていきたいです。)
また上記の例だと4つのオブジェクトと初めからオブジェクトの個数が確定していますが、オブジェクトの個数が検知によって変わる場合(1つだったり、2つだったり、3つだったり)はどのようにしたら良いでしょうか(どのように定義したら良いでしょうか)。
宜しくお願い致します。
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
とすれば、すべての要素を確認できます。
ご回答ありがとうございます。
for i=1:size(bboxes,1)
x= bboxes(i,1)
y= bboxes(i,2)
w= bboxes(i,3)
h= bboxes(i,4)
end
で試させて頂きます。
ご丁寧にありがとうございます。

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Computer Vision Toolbox 入門 的更多信息

产品

版本

R2019a

Community Treasure Hunt

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

Start Hunting!