zl程序教程

您现在的位置是:首页 >  后端

当前栏目

如何使用MATLAB制作 “福寿图“ 以及 “百寿图“

MATLAB 如何 以及 制作 使用
2023-09-11 14:20:18 时间

效果大概是这样的(现在就想着过年会不会太早了hiahiahia):

福寿图

在这里插入图片描述

百寿图

在这里插入图片描述
这个寿是由一堆小的篆书寿字构成的:
在这里插入图片描述
突然好奇用python不规则形状背景词云来做这个可不可以,


素材

这俩的代码都非常简单哈,只需要把特定图片放到特定位置进行组合就好,所以说只要有素材就不难办到,这里就不详细展开来讲啦,素材包在这里:
链接:https://pan.baidu.com/s/1FfxMJAlxbqwqYlrMHPnSXA
提取码: 7u3k

其中最主要的就是包含了一百个寿字素材的longevity.mat素材包,收集不易点个赞叭T▽T
在这里插入图片描述


代码

百寿图:

function lifeFig
lifeData=load('longevity.mat');
data=lifeData.data;

lifePic=imread('lifePic.png');
lifePic=imresize(lifePic,[45,45]);
lifePic=rgb2gray(lifePic);
lifePic(lifePic<200)=0;
imshow(lifePic)

newPic=ones([90*45,60*45,3]).*255;
[X,Y]=find(lifePic==0);
for i=1:length(X)
    tempPic=data{mod(i-1,100)+1};
    newPic((X(i)-1)*90+(1:90),(Y(i)-1)*60+(1:60),:)=tempPic;
end

newPicR=newPic(:,:,1);
newPicG=newPic(:,:,2);
newPicB=newPic(:,:,3);
newPicR(newPic(:,:,1)>150)=0.8000*255;
newPicR(newPic(:,:,1)<=150)=0.9600*255;
newPicG(newPic(:,:,1)>150)=0.2400*255;
newPicG(newPic(:,:,1)<=150)=0.8000*255;
newPicB(newPic(:,:,1)>150)=0.2000*255;
newPicB(newPic(:,:,1)<=150)=0.5600*255;
newPic(:,:,1)=newPicR;
newPic(:,:,2)=newPicG;
newPic(:,:,3)=newPicB;
newPic=uint8(newPic);

imwrite(newPic,'result1.png')
imshow(newPic)
end

福寿图:

function lifeFig2
lifeData=load('longevity.mat');
data=lifeData.data;

fuPic=imread('fuPic.png');
fuPic=rgb2gray(fuPic);
fuPic=imresize(fuPic,[900,900]);

newPic=ones([180*7,180*6,3]).*255;
n=1;
for i=1:13
    for j=1:18
        tempPic=data{n};
        newPic((i-1)*90+(1:90)+30*mod(j,3),(j-1)*60+(1:60),:)=tempPic;
        newPic(:,(j-1)*60+(1:4),:)=0;
        newPic((i-1)*90+(1:4)+30*mod(j,3),(j-1)*60+(1:60),:)=0;
        n=mod(n,100)+1;
    end
end
newPic=newPic(1:180*6,:,:);
[xMesh,yMesh]=meshgrid(1:180*6,1:180*6);
rMesh=sqrt((xMesh-540.5).^2+(yMesh-540.5).^2);
newPicR=newPic(:,:,1);
newPicG=newPic(:,:,2);
newPicB=newPic(:,:,3);
newPicR(rMesh>500)=0;newPicR(rMesh>505)=255;
newPicG(rMesh>500)=0;newPicG(rMesh>505)=255;
newPicB(rMesh>500)=0;newPicB(rMesh>505)=255;
newPicR_r=newPicR((540-450)+(1:900),(540-450)+(1:900));
newPicG_r=newPicG((540-450)+(1:900),(540-450)+(1:900));
newPicB_r=newPicB((540-450)+(1:900),(540-450)+(1:900));
newPicR_r(fuPic<150)=fuPic(fuPic<150);
newPicG_r(fuPic<150)=fuPic(fuPic<150);
newPicB_r(fuPic<150)=fuPic(fuPic<150);
newPicR((540-450)+(1:900),(540-450)+(1:900))=newPicR_r;
newPicG((540-450)+(1:900),(540-450)+(1:900))=newPicG_r;
newPicB((540-450)+(1:900),(540-450)+(1:900))=newPicB_r;
newPic(:,:,1)=255-(255-newPicR).*(1-0.8);
newPic(:,:,2)=255-(255-newPicG).*(1-0.24);
newPic(:,:,3)=255-(255-newPicB).*(1-0.2);
newPic=uint8(newPic);

imwrite(newPic,'result2.png')
imshow(newPic)
end