zoukankan      html  css  js  c++  java
  • 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);

    }

  • 相关阅读:
    最接近原点的 K 个点
    水域大小
    根据数字二进制下 1 的数目排序
    有效的山脉数组
    岛屿的周长
    求根到叶子节点数字之和
    数组中的最长山脉
    [转] 结构体file_operations
    获取主机硬件资源 函数
    readdir() 获取文件类型
  • 原文地址:https://www.cnblogs.com/liming19680104/p/15361308.html
Copyright © 2011-2022 走看看