CvScalar

CvScalar
CvScalar就是一个包含四个元素的结构体变量。

CvScalar定义可存放1—4个数值,其结构如下。

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

------------------------------------------------

CvScalar pt;

如果使用的图像是1通道的,则pt.val[0]中存储数据

如果使用的图像是3通道的,则pt.val[0],pt.val[1],pt.val[2]中存储数据

==============================

cvGet2D 获得某个点的值, idx0=hight 行值, idx1=width 列值。
CVAPI(CvScalar) cvGet2D( const CvArr* arr, int idx0, int idx1 );
 -----------------------------------------------
cvSet2D 给某个点赋值。
CVAPI(void) cvSet2D( CvArr* arr, int idx0, int idx1, CvScalar value );
 -----------------------------------------------
由上可见,cvGet2D的返回类型和cvSet2D中value的类型都是CvScalar,这样定义一个CvScalar变量再调用函数就OK了。


你看一下就会很清楚了。

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

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;
}


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;
}

你可能感兴趣的:(opencv,CvScalar)