cvAddWeighted函数格式:
/* dst = src1 * alpha + src2 * beta + gamma */ CVAPI(void) cvAddWeighted( const CvArr* src1, double alpha, const CvArr* src2, double beta, double gamma, CvArr* dst );参数:
函数 cvAddWeighted 计算两数组的加权值的和: dst(I)=src1(I)*alpha+src2(I)*beta+gamma 所有的数组必须有相同的类型相同的大小或ROI大小.
说明:
在cvAddWeighted函数中,有两个源图象src1 和 src2。这两个图象可以是任何象素类型,只要它们的类型相同。它们可以是单通道或是三通道,只要它们相符。运算结果的目标图象,dst必须和src1和src2有相同的象素类型。这些图象可以是不同的尺寸,但它们的ROI必须有相同的大小,否则OpenCV会报告一个错误。参数 alpha 是src1的混合强度,beta是src2的混合强度。
IplImage* ImageAlpha(IplImage *pImg){ CvFont font; float alpha_value; char alpha_str[10]; IplImage *src1 = cvCloneImage(pImg); IplImage *src2 = cvCreateImage(cvSize(src1->width/5, src1->height/5),src1->depth, src1->nChannels); cvResize(src1, src2); for (int x = 0; x < 5; x+=1){ for (int y = 0; y < 5; y+=1){ alpha_value = (float)(x+y*5)/(5 * 5-1); sprintf(alpha_str, "%.3f", alpha_value); cvSetImageROI(src1,cvRect(x*(src1->width/5),y*(src1->height/5), src1->width/5, src1->height/5)); cvAddWeighted(src2, alpha_value, src1, 1 - alpha_value, 0, src1); cvResetImageROI(src1); } } return src1; }输出结果:
关于Image Engineering & Computer Vision的更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.