Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将两点转换为矩形(cv::Rect)_C++_Image_Opencv_Image Processing - Fatal编程技术网

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);