検出した領域の重心点の求め方とそれらの点の結び方
古いコメントを表示
目や口を検出し、検出した四角の重心点を求めたいです。また、検出した重心点を結ぶ方法も教えていただきたいです。
今、このように目は6分割してその2コマ目と5コマ目を赤い四角で囲むようになっているのですが、その赤い四角の重心点、口を検出した四角の重心点の求め方。また、それらの3点を結んだ三角形を作りその三角形の重心点の求め方を教えていただきたいです。
現在のプログラムのどこにどんなコードを書けばいいのかが分かりません。ご教授願います。

FaceDetector = vision.CascadeObjectDetector();
EyesDetector = vision.CascadeObjectDetector('EyePairBig');
MouthDetector = vision.CascadeObjectDetector('Mouth');
I = imread('画像');
%%
Facebbox = FaceDetector(I);
Eyesbbox = EyesDetector(I);
Mouthbbox = MouthDetector(I);
%%
I = insertObjectAnnotation(I,'rectangle',Facebbox,'Face');
I = insertObjectAnnotation(I,'rectangle',Eyesbbox,'EyePairBig');
I = insertObjectAnnotation(I,'rectangle',Mouthbbox,'Mouth');
% Bounding Boxの位置は[x, y, width, height] ⇒ x座標に幅の1/6,4/6を足し、幅を1/6にする
lefteye = [Eyesbbox(1)+Eyesbbox(3)*1/6 Eyesbbox(2) Eyesbbox(3)/6 Eyesbbox(4)];
righteye = [Eyesbbox(1)+Eyesbbox(3)*4/6 Eyesbbox(2) Eyesbbox(3)/6 Eyesbbox(4)];
I = insertShape(I,'rectangle', lefteye,'Color','red','LineWidth',3);
I = insertShape(I,'rectangle',righteye,'Color','red','LineWidth',3);
%%
pointsLE = bbox2points(lefteye);
pointsLE(end+1,:) = pointsLE(1,:);
pointsRE = bbox2points(righteye);
pointsRE(end+1,:) = pointsRE(1,:);
pointsM = bbox2points(Mouthbbox);
pointsM(end+1,:) = pointsM(1,:);
%%
imshow(I)
hold on
plot(pointsM(:,1),pointsM(:,2), '*-');
plot(pointsLE(:,1),pointsLE(:,2), '*-');
plot(pointsRE(:,1),pointsRE(:,2), '*-');
hold off
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で 深層学習を使用したオブジェクトの検出 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!