我在C ++中使用OpenCV 2.4.4并且使用Rect我希望用x像素做大。 OpenCV文档提供了nice example(查找“按一定数量扩展或缩小矩形”)如何在图像中使用它http://opencv.willowgarage.com/documentation/cpp/_images/math/a6f41031fb2ccaa600520bcbde63a8a9fcff9edf.png
冷却。唯一的问题我不知道如何在实际的C ++代码中输入它。我试过了:
Rect rect = oldrect + -10; Rect rect = oldrect- + 10; 和 Rect rect = oldrect±10; (我从http://en.wikipedia.org/wiki/Plus-minus_sign复制了这个符号,以确定。
我在其中任何一个都出现了丑陋的错误。
有人可以解释一下,我应该使用哪个聪明的符号,并且不可能包含在HTML中,因此它被嵌入为图像。
答案 0 :(得分:4)
这是C ++中“+ =”的数学符号。你实际上并没有直接使用±。例如:
//make a rectangle that's 10x10 and centered at (0, 0)
cv::Rect rect(0, 0, 10, 10);
std::cout << "Original Rectangle: " << rect.area() << std::endl;
//manual addition to rectangle dimensions -- this will make bigger_rect be 20x20
cv::Rect bigger_rect = rect;
bigger_rect.height += 10;
bigger_rect.width += 10;
std::cout << "Bigger Rectangle: " << bigger_rect.area() << std::endl;
//other method of adding to a rectangle's area -- this will increase rect to be 20x20
rect += cv::Size(10, 10);
std::cout << rect.area() << std::endl;
为了举例说明在矩形的高度和宽度上添加10,请将±
符号视为等同于+= cv::Size(width, height)
嗯,你或多或少都有正确的想法......
编辑:关于你的评论,我应该详细说明: rect + = point,rect - = point,rect + = size,rect - = size是4个不同的操作,例如:
rect += point
和rect -= point
:逐点移动矩形,其中point指的是cv::Point
对象,即您可以将点声明为:
cv::Point pt(5, 5);
,然后如果你做rect += pt
,它会将矩形的x和y成员(默认情况下,这些指向矩形的左上角坐标)移动5 - 例如它相当于执行rect.x += 5
和rect.y += 5
。 rect -= point
的情况相同,虽然是减法而不是添加(所以rect.x -= 5
和rect.y -= 5
)。
rect += size
和rect -= size
会改变矩形的大小而不是它的坐标位置,这样+=
会增加矩形区域,-=
会减少它。
答案 1 :(得分:4)
如果您希望展开Rect
同时保持相同的来源(只需增加width
和height
),您可以使用:
cv::Size inflationSize(20, 20);
myRect += inflationSize;
哪个会为width
和height
添加+20。如果您还要偏移x
和y
点,并实际上从各个方面给矩形充气,您可以执行以下操作:
cv::Point inflationPoint(-20, -20);
cv::Size inflationSize(20, 20);
myRect += inflationPoint;
myRect += inflationSize;
cv::Rect
已经重载+
(和其他)运算符,如果它是cv::Point
,它将调整原点,如果它是cv::Size
,它将调整width
{1}}和height
。