opencv的size类的一些看法

Posted 九柳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv的size类的一些看法相关的知识,希望对你有一定的参考价值。

1.头文件关于size的源码

 Size_ 

/** @brief Template class for specifying the size of an image or rectangle.

The class includes two members called width and height. The structure can be converted to and from
the old OpenCV structures CvSize and CvSize2D32f . The same set of arithmetic and comparison
operations as for Point_ is available.

OpenCV defines the following Size_\\<\\> aliases:
@code
    typedef Size_<int> Size2i;
    typedef Size2i Size;
    typedef Size_<float> Size2f;
@endcode
*/
template<typename _Tp> class Size_

public:
    typedef _Tp value_type;

    //! default constructor
    Size_();
    Size_(_Tp _width, _Tp _height);
    Size_(const Size_& sz);
    Size_(Size_&& sz) CV_NOEXCEPT;
    Size_(const Point_<_Tp>& pt);

    Size_& operator = (const Size_& sz);
    Size_& operator = (Size_&& sz) CV_NOEXCEPT;
    //! the area (width*height)
    _Tp area() const;
    //! aspect ratio (width/height)
    double aspectRatio() const;
    //! true if empty
    bool empty() const;

    //! conversion of another data type.
    template<typename _Tp2> operator Size_<_Tp2>() const;

    _Tp width; //!< the width
    _Tp height; //!< the height
;

typedef Size_<int> Size2i;
typedef Size_<int64> Size2l;
typedef Size_<float> Size2f;
typedef Size_<double> Size2d;
typedef Size2i Size;


2.我看出来的一些玩意

通过源码可以看见size的几种定义方式

typedef Size_<int> Size2i;
typedef Size_<int64> Size2l;
typedef Size_<float> Size2f;
typedef Size_<double> Size2d;
typedef Size2i Size;

分别代表width和height的不同的数据类型

    _Tp width; //!< the width
    _Tp height; //!< the height

然后我们一般定义Size时默认为<int>类型,也就是Size2i
然后是有一些常用的函数

    //! the area (width*height)
    _Tp area() const;
    //! aspect ratio (width/height)
    double aspectRatio() const;
    //! true if empty
    bool empty() const;
    也就是计算面积,长宽比和是否为空

3.为什么要水这篇文章(zise的width和height定义的时候一定要>=0)

zise的width和height定义的时候一定要>=0
特别是在自己玩动态调参的时候!!
一开始用动态调参的时候一直报错,然后网上查原因,可惜全网就我一个人这么憨。然后怀疑是类型不对,之前mat类型没用对也是报的内存错误,反正搞了一个小时误打误撞找到了原因。
好气,等哪天气消了再把这篇文章给删了哎。

以上是关于opencv的size类的一些看法的主要内容,如果未能解决你的问题,请参考以下文章

swift常用代码片段

OpenCV_Mat类对象常用属性值的获取方法

opencv 图像rowcol坐标对应关系

这个代码片段究竟做了啥?

Jekyll 偏移代码片段高亮的初始行

怎么在vs2022中编译opencvmat类的源码