您的位置:首页 > 运维架构

opencv cvZero() cvAddWeighted() cvConvertScale()

2015-07-07 13:29 696 查看
/* 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值加到每个像素上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: