MATLAB 制作抖音同款旋转星空海报图
2021-04-06 11:55
1531 查看
大概像是下面这样(我是真的不会设计海报,大家凑乎着看叭)
我们要制作的就是上面这样的背景图,文章最后由完整代码
步骤
1.导入图片
导入图片并获得长宽及通道数信息,图片需要和m文件在同一文件夹:
I=imread('test.jpeg'); [W,H,nChanels]=size(I);
我用的原图在这里:
2.将图片扭曲到合适角度
degree=15; eddy_mat=zeros(W,H,nChanels); swirl_degree=degree./1000; midX=W/2; midY=H/2; for y=1:H for x=1:W Yoffset=y-midY; Xoffset=x-midX; radian=atan2(Yoffset,Xoffset); radius=sqrt(Xoffset^2+Yoffset^2); X=int32(radius*cos(radian+radius*swirl_degree)+midX); Y=int32(radius*sin(radian+radius*swirl_degree)+midY); X(X>W)=W;Y(Y>H)=H; X(X<1)=1;Y(Y<1)=1; eddy_mat(x,y,:)=I(X,Y,:); end end eddy_mat=uint8(eddy_mat);
3.构造映射矩阵
其实就是灰度化这张图,我们要根据图片的亮度绘制曲面,因而用灰度图做高度索引再适合不过
map_mat=rgb2gray(eddy_mat);
4.构造曲面,上色并调整角度
使用灰度图构造曲面,再把有色图贴图上去
[Xmesh,Ymesh]=meshgrid(1:H,1:W); surf(Xmesh,map_mat,Ymesh,'EdgeColor','none','LineWidth',0.01,'CData',eddy_mat,'FaceColor','interp')
调整曲面角度,为了方便截图,可以把背景设置成黑色
axes=gca; axes.PlotBoxAspectRatio=[0.6860 0.6875 1.0000]; axes.CameraPosition=[-0.9862 2.2773 1.5062].*1e3; axes.Color=[0 0 0];
注可以将figure调大后截图
5.完整代码及成品效果
完整代码:
function FarGate I=imread('test.jpeg'); [W,H,nChanels]=size(I); degree=15; eddy_mat=zeros(W,H,nChanels); swirl_degree=degree./1000; midX=W/2; midY=H/2; for y=1:H for x=1:W Yoffset=y-midY; Xoffset=x-midX; radian=atan2(Yoffset,Xoffset); radius=sqrt(Xoffset^2+Yoffset^2); X=int32(radius*cos(radian+radius*swirl_degree)+midX); Y=int32(radius*sin(radian+radius*swirl_degree)+midY); X(X>W)=W;Y(Y>H)=H; X(X<1)=1;Y(Y<1)=1; eddy_mat(x,y,:)=I(X,Y,:); end end eddy_mat=uint8(eddy_mat);disp('已完成图像旋转...'),pause(0.5) %T=affine2d([1 0 0;0 1 0;0 0 1]); %dst_mat=imwarp(eddy_mat,T); imshow(eddy_mat) map_mat=rgb2gray(eddy_mat);disp('已获得映射矩阵...'),pause(0.5) imshow(map_mat) [Xmesh,Ymesh]=meshgrid(1:H,1:W); surf(Xmesh,map_mat,Ymesh,'EdgeColor','none','LineWidth',0.01,'CData',eddy_mat,'FaceColor','interp')disp('已构造曲面...'),pause(0.5) axes=gca; axes.PlotBoxAspectRatio=[0.6860 0.6875 1.0000]; axes.CameraPosition=[-0.9862 2.2773 1.5062].*1e3; axes.Color=[0 0 0];disp('已调整曲面角度') end
相关文章推荐
- PS制作“星空高楼”
- matlab 如何画动态图(绘图与旋转视图)
- Matlab制作个人主页
- MATLAB图像旋转源代码
- Matlab 制作《最炫民族风》弱爆了,附代码
- iOS制作 转盘EaseInEaseOut旋转动画
- Matlab制作三维镂空半透明图形
- matlab练习程序(旋转、径向模糊)
- 利用html5制作正方体,同时实现3D旋转效果
- 用 Python 制作“除夕夜倒计时”海报,新的一年你准备好了么?
- matlab中的三维坐标系与旋转
- 用tagcloud插件制作的超炫酷“云标签”(3D旋转和平铺),附前后台代码及标签配置页面
- Matlab GUI入门-直方分布图界面制作
- CSS3制作鼠标经过三角形旋转
- matlab实现彩色图像的平移、旋转、缩放、镜像(双线性插值)
- Android 中轴旋转特效实现,制作别样的图片浏览器
- 制作一个旋转的三角形
- OpenGL之路(五)制作旋转飞机模型
- AS3制作的旋转相册(附源码)
- 前端学习之html+css+js制作旋转轮播图