QT/C++ 使用opencv 对图片裁剪/截取 cv::Rect 矩形类的使用

对于图片的裁剪可以使用cv::Rect 矩形类

目录

1.使用cv::Rect 矩形类​裁剪图片

2. cv::Rect 矩形类的其他使用方法介绍


1.使用cv::Rect 矩形类​裁剪图片

img = cv::imread(name);//读取一张图片

cv::Rect rect(500,500, 4000, 4000);//创建一个Rect对象

img2 =img(rect);                     //img2就是被截取后的图片

 左侧为截取后图像

QT/C++ 使用opencv 对图片裁剪/截取 cv::Rect 矩形类的使用_第1张图片

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

}





你可能感兴趣的:(c++,opencv,开发语言)