女神要我给她画圣诞树?高情商这样画!

画圣诞树的代码都在这里啰!由于期末时间紧张,这里就不对代码做详细解释了(源代码有一定的注释)!请见谅!

第一个是水彩画滤镜:

参考了(图像滤镜算法——水彩滤镜、漫画滤镜_iostream__的博客-CSDN博客_滤镜算法)这篇文章

close;clear;clc;%读取图片
src=imread("src\6.jpg");
imshow(src);img_get=wcPainter(src,10,21,5,1);imshow(img_get);
imwrite(img_get,"6t-21.jpg");function img_get=wcPainter(src,colorSize,penSize,filterSzie,parm)ht=size(src,1); %%高
wt=size(src,2); %%宽img_temp=src; %输出color_level(:,:)=round(colorSize*(double(src(:,:,1))+double(src(:,:,2))+double(src(:,:,3)))/(3*255));%%原图像的色彩等级rPen=(penSize-1)/2; %%画笔半径for i=1+rPen:ht-rPenfor j=1+rPen:wt-rPen %%不计算最外层cnt_level=zeros(colorSize+1,1); %统计每个亮度等级出现多少次temp_color=zeros(colorSize+1,3); %每个亮度等级对应的颜色    %%每个像素及其周围for m=-rPen:rPenfor n=-rPen:rPencnt_level(color_level(i+m,j+n)+1,1)=cnt_level(color_level(i+m,j+n)+1,1)+1;temp_color(color_level(i+m,j+n)+1,:)=round((temp_color(color_level(i+m,j+n)+1,:)+double([src(i+m,j+n,1),src(i+m,j+n,2),src(i+m,j+n,3)]))/2); %与之前的取平均          endend[~,index_max]=max(cnt_level);img_temp(i+m,j+n,1)=temp_color(index_max,1);img_temp(i+m,j+n,2)=temp_color(index_max,2);img_temp(i+m,j+n,3)=temp_color(index_max,3);end
endimg_get0=img_temp(1+rPen:ht-rPen,1+rPen:wt-rPen,:);%%%原结果有点生硬,滤波平滑一下
if(filterSzie>0) %核大于0才滤波
gw=fspecial('gaussian',[filterSzie,filterSzie],parm);
img_get=imfilter(img_get0,gw,'replicate');
else
img_get= img_get0;
endend

下面是添加雪花效果的滤镜:

close;clear;clc;%读取图片
src=imread("out\6t-21.jpg");%输出路径
outPath='6-snowFlake-21.gif';ht=size(src,1);
wd=size(src,2);%雪花大小
nfSize=6;%%速度需要和nfsize成倍数
v=2*nfSize;
vy=2;
%%学花数量
num=50;
%每帧时间
dt = 1/10;
%%随机生成位置
[ii,jj]=getInitialPos(ht,wd,nfSize,num);makeGif(src,nfSize,ii,jj,v,vy,dt,outPath);function [ii,jj]=getInitialPos(ht,wd,nfSize,num) %获取初始位置
%%位置也是nfsize的倍数m_choice=floor(ht/nfSize); %% 可以取的倍数范围
n_choice=floor(wd/nfSize); %%ii=randperm(m_choice,num)*nfSize; %%随机
jj=randperm(n_choice,num)*nfSize;ii=ii(ii>nfSize&ii<m_choice*nfSize); %%注意不能越界
jj=jj(jj>nfSize&jj<n_choice*nfSize);%%列向量
ii=ii';
jj=jj';endfunction makeGif(src,nfSize,ii,jj,v,vy,dt,outPath)
%参数依次为原图,雪花大小,初始位置ij,速度,每帧时间,输出路径
ht=size(src,1);
wd=size(src,2);
fs=floor(ht/v); %%帧数temp=addMultiSnowFlake(src,ii,jj,nfSize);
[tempI,mapI] = rgb2ind(temp,128);
imwrite(tempI,mapI,outPath,'gif','LoopCount',Inf,'DelayTime',dt);
for k = 2:fsii=MoveSnowFlake(ii,v,ht,nfSize);%[ii,jj]=MoveSnowFlake2(ii,jj,v,vy,ht,wd,nfSize);temp=addMultiSnowFlake(src,ii,jj,nfSize);[tempI,mapI] = rgb2ind(temp,128);imwrite(tempI,mapI,outPath,'gif','WriteMode','append','DelayTime',dt);
endendfunction [ii_move,jj_move]=MoveSnowFlake2(ii,jj,v,vy,ht,wd,nfSize) %%v是每一帧的移动量,即速度,ht是边界长
ii_move=ii+v;
ii_move(ii_move>ht-nfSize)=nfSize*2; %检查越界的,越界的就从上面冒出来num=size(jj,1);
jj_move=jj+round(unifrnd (-vy,vy,num,1));
jj_move(jj_move>wd-nfSize)=nfSize*2;
jj_move(jj_move<nfSize)=wd-nfSize*2;
endfunction ii_move=MoveSnowFlake(ii,v,ht,nfSize) %%v是每一帧的移动量,即速度,ht是边界长
ii_move=ii+v;
ii_move(ii_move>=ht-nfSize)=nfSize*2; %检查越界的,越界的就从上面冒出来end%%%多片雪花
function img_get=addMultiSnowFlake(src,ii,jj,nfSize)
num_fk=size(ii,1);
img_get=src;for nt=1:num_fkfor nf=-nfSize:nfSize    img_get(ii(nt)+nf,jj(nt),:)=255;  img_get(ii(nt),jj(nt)+nf,:)=255;img_get(ii(nt)+nf,jj(nt)+nf,:)=255;img_get(ii(nt)-nf,jj(nt)+nf,:)=255; end
endend%%单片雪花
function img_get=addOneSnowFlake(src,i,j,nfSize)
img_get=src;for nf=-nfSize:nfSize   img_get(i+nf,j,:)=255;  img_get(i,j+nf,:)=255;img_get(i+nf,j+nf,:)=255;img_get(i-nf,j+nf,:)=255;
endend

最后是直接画一棵圣诞树的代码:

close;clear;clc;%%背景
% figure;
Background(150,320);
hold on;
%%轮廓
% plot([-100,100],[0,0],'g','LineWidth',2);
% plot([0,-100],[300,0],'g','LineWidth',2);
% plot([0,100],[300,0],'g','LineWidth',2);
%%添加线
[xs,ys]=getLines(14);
plot(xs,ys,'g','LineWidth',1);%%添加球
%绿、蓝、黄、红
cmap=[0 250 0;0,0,255;255,255,0;255 0 0]/255;%个数
num=200;
%半径
%r=6;
alpha=0.8;for it=1:numx_c=round(unifrnd(-100,100));if(x_c<=0)ymax=round(x_c*3+300);elseymax=round(x_c*-3+300);endy_c=round(unifrnd(0,ymax)); %不能越界center=[x_c,y_c];%%%%随机确定球的颜色,按4321比例typ_chose=round(unifrnd(0,100));if(typ_chose<=40)tp=3;elseif(typ_chose<=70)tp=4;elseif(typ_chose<=90)tp=2;elsetp=1;endr=unifrnd(4,6);addCircle(center,r,tp,cmap,alpha)endf=getframe(gcf);
imwrite(f.cdata,'test8.jpg');function [xs,ys]=getLines(n)
xs=zeros(n,1);
ys=zeros(n,1);
xs(1)=-100;
ys(1)=0;
for i=2:nif(xs(i-1)<0)xs(i)=round((900-3*ys(i-1)+xs(i-1))/10);ys(i)=300-3*xs(i);elsexs(i)=round((3*ys(i-1)+xs(i-1)-900)/10);ys(i)=300+3*xs(i);end
endendfunction Background(x,y)
X=[-x,-x,x,x];
Y=[y,-20,-20,y];
patch(X, Y,[0 0 0], 'facealpha', 1, 'edgecolor', 'none');
axis equal;
axis off; %不要坐标轴
endfunction addCircle(center,r,type,cmap,alpha) %画圆的函数 %alpha是透明度
t = 0 : .1 : 2 * pi;
x = r * cos(t) + center(1);
y = r * sin(t) + center(2);
patch(x, y,cmap(type,:), 'facealpha', alpha, 'edgecolor', 'none');
axis equal;
axis off; %不要坐标轴
end

结果分别如下:

(原图:)

(水彩画滤镜后的图片:)

(加入雪花效果:)

(GIF过大不能添加,只能添加一个截图:)

(直接画一个圣诞树:)

用MATLAB画圣诞树的源代码相关推荐

  1. 搞个气氛 用MATLAB画一棵精致的圣诞树

    2021-12-19 出续集啦!! 在本文的基础上,实现Matlab制作圣诞树和圣诞快乐歌!欢迎试用! 接着奏乐接着舞 Matlab制作圣诞树和圣诞快乐歌_liu08_13的博客-CSDN博客 0.前 ...

  2. matlab画一个树,搞气氛!用MATLAB画一棵Bling Bling的圣诞树

    0.前言 马上圣诞节了,今天推一篇用MATLAB画圣诞树的,效果如下图所示: 1.准备工作 因为这次用的是MATLAB,不像PYTHON一样需要装一些依赖库,要实现本文的效果,只需安装MATLAB即可 ...

  3. 接着奏乐接着舞 Matlab制作圣诞树和圣诞快乐歌

    0.前言 时隔一年,又是一年圣诞时.仔细想想,距离上次更新已经过去了很久很久,打工人实在时间精力有限,疏于更新了,感谢还没取关的朋友们- 去年差不多这个时候的一篇关于Matlab画圣诞树的推送最近受到 ...

  4. Python3.8画圣诞树和炫酷烟花的源代码分享

    眼看就快到圣诞了,就想着来个不一样的python绘画圣诞节树哈,用了心思了.看了关于画圣诞树的很多博客,人才确实很多啊,鄙人不才,也加了点自己的创意.主要就是圣诞树和烟花两个部分,圣诞树里面的元素包含 ...

  5. Python画圣诞树和烟花源代码

    最近一直想让女朋友开心开心,眼看就到圣诞了,就想着来个不一样的,给她画个圣诞树玩一玩,也算是自己亲手做的,用了心思了.看了关于画圣诞树的很多博客,人才确实很多啊,鄙人不才,也加了点自己的创意.主要就是 ...

  6. 画圣诞树的matlab程序,教你怎样用Python画了一棵圣诞树,快来学习

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT入门 分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习. 如何 ...

  7. 用python画圣诞树图片-节日快乐! Python画一棵圣诞树送给你

    本文实例为大家分享了Python画圣诞树的具体代码,供大家参考,具体内容如下 源代码 from turtle import * import random import time #from unit ...

  8. matlab画平面心型线,如何用matlab画出心形线

    心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹线.下面就简单讲解一下如何用matlab画出心形线. 1.心形线的数学定义 2.编制的绘制心形线的matlab程序 ...

  9. MATLAB 画五星红旗

    MATLAB 画五星红旗 源代码如下: clc;clear;close all x=[1 4 5 6 9 7 8 5 2 3]; y=[6 6 9 6 6 4 0 2 0 4]; a=.5; b=[1 ...

最新文章

  1. 华南理工大学院长涉嫌篡改8名研究生成绩,4人已停职
  2. linux下tomcat服务的相关命令
  3. 【转载】【FS】FATFS文件系统介绍(未完待续........2018.4.1)
  4. 尚学python课程---11、linux环境下安装python注意
  5. c 运行js脚本语言,Javascript脚本语言
  6. pytorch ——模型创建与nn.Module
  7. android java.net.ConnectException: Connection 127.0.0.1:8080 refused
  8. postgresql数据库的 to_date 和 to_timestamp 将 字符串转换为时间格式
  9. leetcode python3 简单题14. Longest Common Prefix
  10. 趣味java_java-趣味算法
  11. vue脚手架学习笔记
  12. 安全学习笔记(一)-文件下载以及NC
  13. Netty LengthFieldBasedFrameDecoder源码分析
  14. “无法为保留分区分配驱动器号”的解决
  15. 搜狗收录域名的方法及工具
  16. “DOU出晋采”山西旅游数据发布会在太原举行,山西文旅牵手巨量引擎!
  17. 个人支付微信支付宝接口
  18. 猫和老鼠服务器维护多久结束,猫和老鼠手游:长时间不玩游戏,再次进入游戏后会发生这些事...
  19. 图片不能置于底层怎么办_ps怎么把图片置于底层
  20. 【python】如何快速生成26位字母表?这里看过来。

热门文章

  1. 租传奇手游服务器网站,传奇手游服务端
  2. 基带信号matlab仿真,基带信号仿真方法上篇
  3. 齐博x1如何调用评论
  4. 开发者如何应对新技术暗潮
  5. 一个资深程序员成功的背后
  6. 基于AVR单片机: 两轮自平衡智能车
  7. Fluent报错cl-set-default-save-dir: path does not exist.
  8. WPF使用转换器(Converter)
  9. SaaS与套装软件的“湿地”遭遇战
  10. 腾讯云服务器地域与可用区