对于图片的裁剪可以使用cv::Rect 矩形类
目录
1.使用cv::Rect 矩形类裁剪图片
img = cv::imread(name);//读取一张图片
cv::Rect rect(500,500, 4000, 4000);//创建一个Rect对象
img2 =img(rect); //img2就是被截取后的图片
左侧为截取后图像
2. cv::Rect 矩形类的其他使用方法介绍
首先创建一个对象
第一个参数:为矩形左上角顶点x轴坐标
第二个参数:为矩形左上角顶点y轴坐标
第三个参数:为矩形的宽度
第四个参数:矩形高度
创建一个Rect对象rect后rect会有以下几个功能:
rect.area(); //返回rect的面积
rect.size(); //返回rect的尺寸
rect.tl(); //返回rect的左上顶点的坐标
rect.br(); //返回rect的右下顶点的坐标
rect.width(); //返回rect的宽度
rect.height(); //返回rect的高度
rect.contains(Point(x, y)); //返回布尔变量,判断rect是否包含Point(x, y)点
//求两个矩形的交集和并集
rect = rect1 & rect2;
rect = rect1 | rect2;
//对矩形进行平移和缩放
rect = rect + Point(-100, 100); //平移,也就是左上顶点的x坐标-100,y坐标+100
rect = rect + Size(-100, 100); //缩放,左上顶点不变,宽度-100,高度+100
//对矩形进行对比,返回布尔变量
rect1 == rect2;
rect1 != rect2;
//判断rect1是否在rect2里面
bool isInside(Rect rect1, Rect rect2)
{
return (rect1 == (rect1&rect2));
}
//获取矩形中心点
Point getCenterPoint(Rect rect)
{
Point cpt;
cpt.x = rect.x + cvRound(rect.width/2.0);
cpt.y = rect.y + cvRound(rect.height/2.0);
return cpt;
}
//围绕矩形中心缩放
Rect rectCenterScale(Rect rect, Size size)
{
rect = rect + size;
Point pt;
pt.x = cvRound(size.width/2.0);
pt.y = cvRound(size.height/2.0);
return (rect-pt);
}