将Rect展开100px

时间:2013-04-11 05:51:19

标签: opencv

我在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中,因此它被嵌入为图像。

2 个答案:

答案 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 += pointrect -= point:逐点移动矩形,其中point指的是cv::Point对象,即您可以将点声明为: cv::Point pt(5, 5);,然后如果你做rect += pt,它会将矩形的x和y成员(默认情况下,这些指向矩形的左上角坐标)移动5 - 例如它相当于执行rect.x += 5rect.y += 5rect -= point的情况相同,虽然是减法而不是添加(所以rect.x -= 5rect.y -= 5)。

rect += sizerect -= size会改变矩形的大小而不是它的坐标位置,这样+=会增加矩形区域,-=会减少它。

答案 1 :(得分:4)

如果您希望展开Rect同时保持相同的来源(只需增加widthheight),您可以使用:

cv::Size inflationSize(20, 20);
myRect += inflationSize;

哪个会为widthheight添加+20。如果您还要偏移xy点,并实际上从各个方面给矩形充气,您可以执行以下操作:

cv::Point inflationPoint(-20, -20);
cv::Size inflationSize(20, 20);
myRect += inflationPoint;
myRect += inflationSize;

cv::Rect已经重载+(和其他)运算符,如果它是cv::Point,它将调整原点,如果它是cv::Size,它将调整width {1}}和height