• 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处理。

  • 相关阅读:
    知识点:synchronized 原理分析
    知识点:spring 完全手册
    知识点:图说 Mysql 权限管理
    知识点:Mysql 基本用法之流程控制
    知识点:Mysql 基本用法之函数
    知识点:Mysql 基本用法之存储过程
    知识点:Mysql 基本用法之事务
    知识点:Mysql 基本用法之触发器
    知识点:Mysql 基本用法之视图
    知识点:MySQL表名不区分大小写的设置方法
  • 原文地址:https://www.cnblogs.com/stemon/p/3836908.html
Copyright © 2020-2023  润新知