zoukankan      html  css  js  c++  java
  • OpenCV学习(2)--基本数据结构

    OpenCV的基本数据结构

    CvPoint:表示图像中的点

    CvPoint2D32f:二维空间中的点

    CvPoint3D32f:三维空间中的点

    这些都是结构体,并不是C++语言中的类,所以他们的构造函数就是简单的内联函数。

     1 typedef struct CvPoint
     2 {
     3     int x;
     4     int y;
     5 }
     6 CvPoint;
     7 
     8 
     9 CV_INLINE  CvPoint  cvPoint( int x, int y )
    10 {
    11     CvPoint p;
    12 
    13     p.x = x;
    14     p.y = y;
    15 
    16     return p;
    17 }

    其中的CV_INLINE就是一个宏定义:

    1 define CV_INLINE inline

    CvSize:表示图像的尺寸

    CvSize2D32f:浮点型数据表示图像的尺寸

     1 typedef struct CvSize
     2 {
     3     int width;
     4     int height;
     5 }
     6 CvSize;
     7 
     8 CV_INLINE  CvSize  cvSize( int width, int height )
     9 {
    10     CvSize s;
    11 
    12     s.width = width;
    13     s.height = height;
    14 
    15     return s;
    16 }

    CvRect表示图像的部分区域

     1 typedef struct CvRect
     2 {
     3     int x;
     4     int y;
     5     int width;
     6     int height;
     7 }
     8 CvRect;
     9 
    10 CV_INLINE  CvRect  cvRect( int x, int y, int width, int height )
    11 {
    12     CvRect r;
    13 
    14     r.x = x;
    15     r.y = y;
    16     r.width = width;
    17     r.height = height;
    18 
    19     return r;
    20 }

    CvScalar包含4个浮点型的成员,可以用来表示B、G、R、alpha。它有三个构造函数,具体的定义:

    
    

    typedef struct CvScalar
    {
    double val[4];
    }
    CvScalar;

    
    

    //至少传一个参数,如果后面三个没有,默认为0
    CV_INLINE CvScalar cvScalar( double val0, double val1 CV_DEFAULT(0),
    double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0))
    {
    CvScalar scalar;
    scalar.val[0] = val0; scalar.val[1] = val1;
    scalar.val[2] = val2; scalar.val[3] = val3;
    return scalar;
    }

    
    

    //只对第一个参数赋值,后面的为0
    CV_INLINE CvScalar cvRealScalar( double val0 )
    {
    CvScalar scalar;
    scalar.val[0] = val0;
    scalar.val[1] = scalar.val[2] = scalar.val[3] = 0;
    return scalar;
    }

    
    

    //把四个参数都赋值为传入的那个参数
    CV_INLINE CvScalar cvScalarAll( double val0123 )
    {
    CvScalar scalar;
    scalar.val[0] = val0123;
    scalar.val[1] = val0123;
    scalar.val[2] = val0123;
    scalar.val[3] = val0123;
    return scalar;
    }

    
    

    CvArr、CvMat和IplImage关系

    派生关系为:CvArr-->CvMat-->IplImage,当CvArr用作函数的参数的时候,无论传入的是CvMat还是IplImage,内部都是按CvMat处理。

  • 相关阅读:
    Java的接口及实例
    卷积函数的参数为Conv2d(in_channels, out_channels, kernel_size, stride, padding, ...),一般关心这5个参数即可
    torch.randn和torch.rand的区别
    Pytorch 里 nn.AdaptiveAvgPool2d(output_size) 原理是什么?
    Python中*args、**args到底是什么、有啥区别、怎么用
    padding输入值是tuple数组,其含义是
    矩阵/图像边长经过卷积操作后的尺寸计算方法:
    CIFAR-10 数据集
    vgg code
    Epoch、Iteration、Batchsize
  • 原文地址:https://www.cnblogs.com/stemon/p/3836908.html
Copyright © 2011-2022 走看看