我有兩個點(假定爲矩形,它的左上角&右下角)。將兩點轉換爲矩形(cv :: Rect)
Point pTopLeft;
Point pBottomRight;
我想制定一個cv :: Rect使用這些點。所以,我試過
cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
沒有錯誤。但Rect似乎沒有包含任何內容。即,兩個點都指示爲零。那麼,我如何用任意兩點制定一個新的Rect對象?
我有兩個點(假定爲矩形,它的左上角&右下角)。將兩點轉換爲矩形(cv :: Rect)
Point pTopLeft;
Point pBottomRight;
我想制定一個cv :: Rect使用這些點。所以,我試過
cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
沒有錯誤。但Rect似乎沒有包含任何內容。即,兩個點都指示爲零。那麼,我如何用任意兩點制定一個新的Rect對象?
因爲矩形:: TL ()和Rect :: br()只是返回拷貝,不是引用,試試構造函數:
cv::Rect rRect(pTopLeft, pBottomRight);
你必須從你的兩點計算基本信息。寬度和高度,然後使用下面的構造函數創建新的對象:
(Object) rect(x, y, width, height)
pTopLeft.x = x
pTopLeft.y = y
pBottomRight.x - pTopLeft.x = width
pTopLeft.y - pBottomRight.y = height
你可以把它這種方式也
Point pTopLeft;
Point pBottomRight;
cv::Rect rRect(pTopLeft.x,pTopLeft.y,pBottomRight.x-pTopLeft.x,pBottomRight.y-pTopLeft.y);
將值賦給返回函數一點也不好。但是我的好奇心使用兩點來制定Rect對象,導致我忽略了這一點。 –
請注意,正確的底點是排他性的。如果你想包含點,請嘗試'cv :: Rect rRect(pTopLeft,pBottomRight + cv :: Point(1,1));' –