图像叠加有cvAdd(),cvAddS(),cvAddWeighted()函数,其中cvAddWeighted()是可以根据权重进行融合~~水印大概就是可以根据这个做出来的
原图:test1test2
创建空白的img3和img4(对比cvAddWeighted()函数中的gamma的作用,但是发现不了明显的区别啊)
CVAPI(void) cvAddWeighted( const CvArr* src1, double alpha,
const CvArr* src2, double beta,
double gamma, CvArr* dst );
#include <highgui.h>
using namespace std;
int x=0,y=0,height=320,length=480;
double alpha=0.7,beta=0.3;
int main()
{
IplImage *img1 = cvLoadImage("test1.jpg");
IplImage *img2 = cvLoadImage("test2.jpg");
IplImage *img3 = cvCreateImage( cvSize(320,480),IPL_DEPTH_8U,3 );
IplImage *img4 = cvCreateImage( cvSize(320,480),IPL_DEPTH_8U,3 );
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
cvShowImage("Example1",img1);
cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE);
cvShowImage("Example2",img2);
cvWaitKey(0);
cvDestroyWindow("Example1");
cvDestroyWindow("Example2");
cvSetImageROI( img1,cvRect(0,0,height,length) );
cvSetImageROI( img2,cvRect(0,0,height,length) );
cvAddWeighted(img1, alpha, img2, beta,10.0,img3);
cvAddWeighted(img1, alpha, img2, beta,0.5,img4);
cvResetImageROI(img1);
cvNamedWindow( "Mixed1", CV_WINDOW_AUTOSIZE );
cvShowImage( "Mixed1", img3 );
cvNamedWindow( "Mixed2", CV_WINDOW_AUTOSIZE );
cvShowImage( "Mixed2", img4 );
cvWaitKey();
cvDestroyWindow("Mixed1");
cvDestroyWindow("Mixed2");
cvReleaseImage( &img1 );
cvReleaseImage( &img2 );
cvReleaseImage( &img3 );
cvReleaseImage( &img4 );
return 0;
}
运行结果:
你们觉得这两个图有区别!?