検出した領域の重心点の求め方とそれらの点の結び方
Show older comments
目や口を検出し、検出した四角の重心点を求めたいです。また、検出した重心点を結ぶ方法も教えていただきたいです。
今、このように目は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
Accepted Answer
More Answers (0)
Categories
Find more on 深層学習を使用したオブジェクトの検出 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!