opencv cvZero() cvAddWeighted() cvConvertScale()


/* Clears all the array elements (sets them to 0) */
CVAPI(void)  cvSetZero( CvArr* arr );
#define cvZero  cvSetZero

cvZero()函数会将数组中的所有通道的所有元素的值都设置为0


################################################3


/* dst = src1 * alpha + src2 * beta + gamma */
CVAPI(void)  cvAddWeighted( const CvArr* src1, double alpha,
                            const CvArr* src2, double beta,
                            double gamma, CvArr* dst );

cvAddWeighted函数是一个加权相加函数,它可用于一个图像同另一个图像的融合

1.源图像src1和src2以及目标图像dst的像素类型必须相同,通道数也必须相同

2.结果图像dst和源图像src1和src2可能是不同尺寸,但是它们的ROI必须统一尺寸

3.参数alpha是src1的融合强度,beta是src2的融合强度


##################################################


/* Performs linear transformation on every source array element:
   dst(x,y,c) = scale*src(x,y,c)+shift.
   Arbitrary combination of input and output array depths are allowed
   (number of channels must be the same), thus the function can be used
   for type conversion */
CVAPI(void)  cvConvertScale( const CvArr* src, CvArr* dst,
                             double scale CV_DEFAULT(1),
                             double shift CV_DEFAULT(0) );
#define cvCvtScale cvConvertScale
#define cvScale  cvConvertScale
#define cvConvert( src, dst )  cvConvertScale( (src), (dst), 1, 0 )

cvConvertScale函数共有两个功能

1.将源图像的数据类型转变成目标图像的数据类型。例如,如果我们有一个8位的RGB灰度图像并(ˇ?ˇ) (ˇ?ˇ) 想把它变成16位有符号的图像,就可以调用函数cvConvertScale()来做这个工作

2.对图像数据执行线性变换。在转换成新的数据类型之后,每个像素值将乘以scale值,然后将shift值加到每个像素上



你可能感兴趣的:(opencv,图像处理)