实验截图:
- 添加水印后的图:

实验代码:
img = imread('paimeng.jpg');
img_water = imread('shuiyin.png');
img_water = imresize(img_water ,[64 128]);%调整水印大小
ratio = 0.5;%调整水印透明程度
[m,n] = size(img);%得到原图高、宽、通道数
[m_water,n_water,c_water] = size(img_water);%得到水印图高、宽、通道数
x = uint8(ones(m - m_water,n_water,c_water));
y = uint8(ones(m,n - n_water,c_water));
watermark = [img_water;x];
watermark = [y watermark];
imgfinal = img + ratio * watermark;
subplot(2,2,1);imshow(imgfinal);title('水印在右上角');
watermark = [x;img_water];
watermark = [y watermark];
imgfinal = img + ratio * watermark;
subplot(2,2,2);imshow(imgfinal);title('水印在右下角');
watermark = [x;img_water];
watermark = [watermark y] ;
imgfinal = img + ratio * watermark;
subplot(2,2,3);imshow(imgfinal);title('水印在左下角');
watermark = [img_water;x];
watermark = [watermark y];
imgfinal = img + ratio * watermark;
subplot(2,2,4);imshow(imgfinal);title('水印在左上角');
结果分析:
- 首先,我们先将水印图片调整为我们需要的大小,同时我们利用原图减去水印的高、宽来得出水印需要拼接的零矩阵,通过调整,我们可以让水印在图片不同的角落中出现,最后将水印和图片叠加起来即可实现最后的效果,我们可以用公式img = img + ratio * wwatermark来实现,其中ratio是用来调整水印透明度的一个参数,而watermark就是我们处理后的水印图片,最后的img就是我们想要的添加上水印的图片。