zoukankan      html  css  js  c++  java
  • OpenCV operator 重载

    OpenCV operator 重载
    以Rect_为例,研究operator 的用法

    template<typename _Tp> class Rect_
    {
    public:
        typedef _Tp value_type;
        //! various constructors
        Rect_();
        Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height);
        Rect_(const Rect_& r);
        Rect_(const CvRect& r);
        Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz);
        Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2);
        Rect_& operator = ( const Rect_& r );
        //! the top-left corner
        Point_<_Tp> tl() const;
        //! the bottom-right corner
        Point_<_Tp> br() const;
        //! size (width, height) of the rectangle
        Size_<_Tp> size() const;
        //! area (width*height) of the rectangle
        _Tp area() const;
        //! conversion to another data type
        template<typename _Tp2> operator Rect_<_Tp2>() const;
        //! conversion to the old-style CvRect
        operator CvRect() const;
        //! checks whether the rectangle contains the point
        bool contains(const Point_<_Tp>& pt) const;
        _Tp x, y, width, height; //< the top-left corner, as well as width and height of the rectangle
    };

    1. 
    Rect_& operator = ( const Rect_& r ); 
    只是简单的重载=,不再多说。
    2 .
    operator CvRect() const;
    这里重载了CvRect()这个操作符,这是为了便于老的C接口的转换,原来C的实现是
    typedef struct CvRect
    {
        int x;
        int y;
        int width;
        int height;
    }
    CvRect;
    CV_INLINE  CvRect  cvRect( int x, int y, int width, int height )
    {
        CvRect r;
        r.x = x;
        r.y = y;
        r.width = width;
        r.height = height;
        return r;
    }
    这样就可以调用了CvRect()了,而且使用也很方便,
    只要
    Rect newRect = Rect();
    CvRect oldRect = CvRect(newRect);

    其他的Point, Size, Mat 等C++中新定义的类,都有类似的operator重载,以便和老的接口适配。





  • 相关阅读:
    eclipse下mysql编程
    mysql简单操作一
    Mysql ubuntu下的安装卸载
    c++ 上机实验题
    Android BottomSheet:以选取图片为例(2)
    Android BottomSheet:便捷易用的底部滑出面板(1)
    如何绘制caffe网络训练曲线
    10+资深软件架构师谈计算机专业——填高考志愿必读
    添物不花钱学计算机及编程(预备篇)
    Android StatusBarUtil:设置Android系统下方虚拟键键盘透明度
  • 原文地址:https://www.cnblogs.com/fireae/p/3685530.html
Copyright © 2011-2022 走看看