C++ 将两点转换为矩形(cv::Rect)
我有两个点(假设来自一个矩形,是它的左上角和右下角) 我想用这些点来建立一个C++ 将两点转换为矩形(cv::Rect),c++,image,opencv,image-processing,C++,Image,Opencv,Image Processing,我有两个点(假设来自一个矩形,是它的左上角和右下角) 我想用这些点来建立一个cv::Rect。所以,我试过了 cv::Rect rRect; rRect.tl() = pTopLeft; rRect.br() = pBottomRight; 没有错误。但是Rect似乎没有包含任何内容。i、 例如,两个点都指示零。那么,我如何用任意两点构造一个新的Rect对象呢?你必须从两点计算基本信息。宽度和高度,然后使用以下构造函数创建新对象: 你也可以这样做 Point pTopLeft; Point
cv::Rect
。所以,我试过了
cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
没有错误。但是
Rect
似乎没有包含任何内容。i、 例如,两个点都指示零。那么,我如何用任意两点构造一个新的Rect
对象呢?你必须从两点计算基本信息。宽度和高度,然后使用以下构造函数创建新对象:
你也可以这样做
Point pTopLeft;
Point pBottomRight;
cv::Rect rRect(pTopLeft.x,pTopLeft.y,pBottomRight.x-pTopLeft.x,pBottomRight.y-pTopLeft.y);
由于Rect::tl()
和Rect::br()
只返回副本,而不是引用,请尝试构造函数:
cv::Rect rRect(pTopLeft, pBottomRight);
给返回函数赋值一点也不好。但是我对用两点来表达一个Rect对象的好奇,导致我忽略了这个想法。请注意,右底点是排他性的。如果希望包含点,请尝试
cv::Rect Rect(pTopLeft,pBottomRight+cv::point(1,1))代码>
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);
cv::Rect rRect(pTopLeft, pBottomRight);