opencv-cv::Rect-矩形

 

复制代码
    cv::Rect r;  //空构造
    cv::Rect r1(50,40,100,80);  //赋值构造
    //参数1和参数2:左上角点坐标;参数3和参数4:宽和高
    cv::Rect r2(r1);  //拷贝构造

    cv::Size s(100,80);
    cv::Point p(10,8);

    cv::Rect r3(p,s);
    int i=r3.area(); //返回面积
    cv::Point p1;
    cv::Point p2;
    p1=r3.tl();  //返回左上角点坐标
    p2=r3.br();  //返回右下角点坐标

    cv::Point p3(50,45);
    bool b;
    b=r3.contains(p3);  //返回布尔变量,判断r3是否包含p3点
    //返回false  表示不包含;  返回true  表示包含

    cv::Rect r4=r1 & r3;  //交运算
    cv::Rect r5=r1 | r3;  //并运算

    cv::Size s1(10,5);
    cv::Rect r6=r3+s1;  //改变宽高,左上角坐标不变
    cv::Rect r7=r3+cv::Point(-100, 100);  //平移,宽高不变

    b = r3==r6;//返回布尔变量,判断r3和r6是否完全相等
    b= r3 != r6;  //返回布尔变量,判断r3和r6是否 不相等



    qDebug()<<r3.x<<";"<<r3.y<<";"<<r3.width<<";"<<r3.height;  //成员访问
    qDebug()<<i<<b;
    qDebug()<<r4.width<<r5.width;
    qDebug()<<r6.x<<";"<<r6.y<<";"<<r6.width<<";"<<r6.height;
    qDebug()<<r7.x<<";"<<r7.y<<";"<<r7.width<<";"<<r7.height;
复制代码

 

OpenCV里貌似没有判断rect1是否在rect2里面的功能,所以自己写一个吧

bool isInside(Rect rect1, Rect rect2)

{

    return (rect1 == (rect1&rect2));

}

 

OpenCV貌似也没有获取矩形中心点的功能,还是自己写一个

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

}

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(1503)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示