2016-04-11 7 views
2

こんにちは私は顔検出矩形の後に2番目の矩形を描画しようとしていますが、パラメータx、y、h、wは混乱しています。私は変数内で異なる値を試しましたが、正確に何を意味するのか分かりません。 私はx、yは希望の位置に移動し、h、wはサイズを変更する必要があることを知っています。矩形関数をC++で使用するobjective-c

- (void)processImage:(cv::Mat &)image { 
Mat gray; 
std::vector<cv::Rect> faces; 
Scalar color = Scalar(0, 255, 0); 
cvtColor(image, gray, COLOR_BGR2GRAY); 
_faceDetector.detectMultiScale(gray, faces, 1.1, 2, 0, cv::Size(60, 60)); 
for (int i = 0; i < faces.size(); i++) { 
    rectangle(image, faces[i], color, 1); 

    // x, y should move the rectangle to the desired position 
    int x = faces[i].x; 

    int y = faces[i].y; 
    x=x+y; 
    y=y+x; 
    // h, w should resize the rectangle 
    int he = y+faces[i].height*0.1 ; 
    int we = x+faces[i].width*0.1; 

    rectangle(image, cv::Point (x, y), cv::Point (we, he), Scalar(255,0,255),2,8,0); 

} 
} 

誰も矩形でくれ回路図(グラフ)を提供してくださいW、X、Y、hの値を置くことができます。ありがとうございます

答えて

2

xは、X位置、yはY位置です。 hwは、それぞれ高さと幅を表します。

は、次の四角形を検討:

A --------- B 
|   | 
|   | 
C --------- D 

その位置(原点)は点Aによって定義され、他の角がAに対して定義されます。

A = (x, y)

B = (x + width, y)

C = (x, y + height)

D = (x + width, y + height)


あなたはおそらくも見直す必要がある

x=x+y; 
y=y+x; 

異なる軸に座標を追加するのはなぜ理にかなっていますか?

また、前の行に上書きされたxの値を使用することが問題になる可能性があります。初期値と比較して、計算は

,になります