今天给大家带来如何使用MATLAB,在一张图片中通过鼠标指定区域,实现马赛克效果的添加。马赛克效果能够有效地保护隐私或者美化图片,下面就跟随我的步骤,一起来实现这个有趣图片打码功能吧!
一、主要步骤
1.读取图片,通过鼠标框选指定区域。
2.设置马赛克块大小,默认是10。
3.定义mosaic
函数,用于实现马赛克效果。
4.将得到的马赛克图像叠加到原始图像的指定区域。
二、代码实现
%% 用matlab怎么在图片鼠标指定区域打马赛克
clear
clc
%% 读取图像
Image = imread('OIP.jpg'); % 替换为你自己的图像文件路径
imshow(Image)
rect = round(getrect); %返回区域位置信息
cropImage = imcrop(Image ,rect); %索引图像
%% 设置马赛克块的大小
blockSize = 10;
%将源图像三个通道值取出
fr = cropImage(:,:,1);
fg = cropImage(:,:,2);
fb = cropImage(:,:,3);
mosaicr = mosaic(fr, blockSize);
mosaicg = mosaic(fg, blockSize);
mosaicb = mosaic(fb, blockSize);
mosaicImage = cat(3,mosaicr, mosaicg, mosaicb);
% 将马赛克图像叠加到原始图像中
Image(rect(2):rect(2)+rect(4), rect(1):rect(1)+rect(3), :) = mosaicImage;
% 显示结果
figure;
imshow(Image);
title('叠加马赛克效果');
%% 马赛克效果实现
function mosaicImage = mosaic(originalImage, blockSize)
% 获取图像的大小
[rows, cols, ~] = size(originalImage);
% 创建马赛克效果
mosaicImage = originalImage;
for i = 1:blockSize:rows
for j = 1:blockSize:cols
% 计算每个块的平均颜色
block = originalImage(i:min(i+blockSize-1,rows), j:min(j+blockSize-1,cols), :);
averageColor = mean(mean(block,1),2);
% 将整个块设置为均值颜色
mosaicImage(i:min(i+blockSize-1,rows), j:min(j+blockSize-1,cols), :) = averageColor;
end
end
end
在mosaic函数内,我们使用嵌套循环遍历图像的每个块,计算块的平均颜色,并将整个块设置为均值颜色。
最后
如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真…希望能帮到你!