Python和Matlab怎么实现炫酷的3D旋转图
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,本篇内容主要讲解"Python和Matlab怎么实现炫酷的3D旋转图",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python和Matlab怎么实现炫酷的
千家信息网最后更新 2025年01月16日Python和Matlab怎么实现炫酷的3D旋转图
本篇内容主要讲解"Python和Matlab怎么实现炫酷的3D旋转图",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python和Matlab怎么实现炫酷的3D旋转图"吧!
1.Python爬取美女照片
1.1 留恋忘返的网址
站长素材-分享综合设计素材的平台 (chinaz.com)
1.2 Python代码
#~~~~欢迎关注公众号:电力系统与算法之美~~~~~~~~~~~~· #~~~~~~~~~导入相关库~~~~~~~~~~~~~~~~~~~~·import urllib.requestfrom lxml import etree #~~~~~~~~~1.请求对象的定制~~~~~~~~~~~~~~~~~def create_request(page): if (page == 1): url = 'https://sc.chinaz.com/tag_tupian/YaZhouMeiNv.html' else: url = 'https://sc.chinaz.com/tag_tupian/yazhoumeinv_' + str(page) + '.html' # print(url) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36' } request = urllib.request.Request(url=url, headers=headers) return request #~~~~~~~~~~~2.获取网页的源码~~~~~~~~~~~~~~~~~~~~~def get_content(request): response = urllib.request.urlopen(request) content = response.read().decode('utf-8') return content #~~~~~~~~~~~~~~~~~~~3.下载图片~~~~~~~~~~~~~~~~~~~~~~~~~~def down_img(content): # 下载文件格式:urllib.request.urlretrieve('图片地址','文件的名字') tree = etree.HTML(content) name_list = tree.xpath('//div[@id = "container"]//a/img/@alt') # 一般涉及到图片的网站,都会进行懒加载,要把src换成src2(懒加载时,src会以src2出现) src_list = tree.xpath('//div[@id = "container"]//a/img/@src2') # print(len(name_list)) # print(len(src_list)) for i in range(len(name_list)): name = name_list[i] src = src_list[i] url = 'https:' + src url = url.replace('_s', '') urllib.request.urlretrieve(url=url, filename='./meinv/' + name + '.jpg') #~~~~~~~~~运行~~~~~~~~~~~~~~~if __name__ == '__main__': start_page = int(input('请输入起始页码:')) end_page = int(input('请输入终止页码:')) for page in range(start_page, end_page + 1): #~~~~1.定制请求对象~~~~~ request = create_request(page) #~~~~2.获取网页源码~~~~~ content = get_content(request) #~~~~~3.解析源码并下载图片~~~ down_img(content)
1.3 结果
温馨提示:meinv这个文件夹是提前建立的。
2.Python实现
2.1 条件准备
由1中爬取的照片,我们就可以为接下来的事做准备啦。选取十二张照片,如图:
2.2 运行展示
运行出来比下面这个还炫酷:
2.3 Python实现
CSS3制作3D图片立方体旋转特效
3.Matlab实现
3.1 运行展示
动态视频:
3.2 Matlab代码
%====欢迎关注关注号:电力系统与算法之美function wlz3dpath='.\meinv\';%文件夹名称files=dir(fullfile(path,'*.jpg')); picNum=size(files,1); %% 遍历路径下每一幅图像for i=1:picNum fileName=strcat(path,files(i).name); img=imread(fileName); img=imresize(img,[120,120]); imgSet{i}=img;end %% fig axes设置fig=figure('units','pixels','position',[50 50 600 600],... 'Numbertitle','off','resize','off',... 'name','album3d','menubar','none');ax=axes('parent',fig,'position',[-0.5 -0.5 2 2],... 'XLim', [-6 6],... 'YLim', [-6 6],... 'ZLim', [-6 6],... 'Visible','on',... 'XTick',[], ... 'YTick',[],... 'Color',[0 0 0],... 'DataAspectRatioMode','manual',... 'CameraPositionMode','manual');hold(ax,'on')ax.CameraPosition=[5 5 5]; %% 用于绘制图片的网格[XMesh,YMesh]=meshgrid(linspace(-1,1,120),linspace(-1,1,120));ZMesh=ones(120,120); %% 绘制图片立方体surfPic(1)=surf(XMesh,YMesh,ZMesh,'CData',imgSet{mod(0,picNum)+1},'EdgeColor','none','FaceColor','interp');surfPic(2)=surf(XMesh,YMesh(end:-1:1,:),-ZMesh,'CData',imgSet{mod(1,picNum)+1},'EdgeColor','none','FaceColor','interp');surfPic(3)=surf(ZMesh,XMesh,YMesh(end:-1:1,:),'CData',imgSet{mod(2,picNum)+1},'EdgeColor','none','FaceColor','interp');surfPic(4)=surf(XMesh,ZMesh,YMesh(end:-1:1,:),'CData',imgSet{mod(3,picNum)+1},'EdgeColor','none','FaceColor','interp');surfPic(5)=surf(-ZMesh,XMesh,YMesh(end:-1:1,:),'CData',imgSet{mod(4,picNum)+1},'EdgeColor','none','FaceColor','interp');surfPic(6)=surf(XMesh,-ZMesh,YMesh(end:-1:1,:),'CData',imgSet{mod(5,picNum)+1},'EdgeColor','none','FaceColor','interp'); %% 依靠小立方体数据绘制中等立方体for i=1:6 surfPicA(i)=surf(surfPic(i).XData.*1.5,surfPic(i).YData.*1.5,surfPic(i).ZData.*1.5,... 'CData',surfPic(i).CData,'EdgeColor','none','FaceColor','interp','FaceAlpha',0.7); end %% 用来调整放大比例的矩阵resizeMat=[2 2 2.5;2 2 2.5;2.5 2 2; 2 2.5 2;2.5 2 2;2 2.5 2]; %% 最大图片绘制 % for i=1:6% surfPicB(i)=surf(surfPic(i).XData.*resizeMat(i,1),...% surfPic(i).YData.*resizeMat(i,2),...% surfPic(i).ZData.*resizeMat(i,3),...% 'CData',surfPic(i).CData,'EdgeColor',...% 'none','FaceColor','interp','FaceAlpha',0.7); % end lastDis=300;preDis=300;set(fig,'WindowButtonMotionFcn',@move2center) function move2center(~,~) xy=get(fig,'CurrentPoint'); preDis=sqrt(sum((xy-[300,300]).^2)); end fps=40;theta=0;rotateTimer=timer('ExecutionMode', 'FixedRate', 'Period',1/fps, 'TimerFcn', @rotateCube);start(rotateTimer) function rotateCube(~,~) theta=theta+0.02; ax.CameraPosition=[cos(theta)*5*sqrt(2),sin(theta)*5*sqrt(2),5]; if (~all([preDis lastDis]<150))&&any([preDis lastDis]<150) for ii=1:6 if preDis<150 surfPicA(ii).XData=surfPic(ii).XData.*resizeMat(ii,1); surfPicA(ii).YData=surfPic(ii).YData.*resizeMat(ii,2); surfPicA(ii).ZData=surfPic(ii).ZData.*resizeMat(ii,3); else surfPicA(ii).XData=surfPic(ii).XData.*1.5; surfPicA(ii).YData=surfPic(ii).YData.*1.5; surfPicA(ii).ZData=surfPic(ii).ZData.*1.5; end end end lastDis=preDis; end % 弃用方案:太卡% set(fig,'WindowButtonMotionFcn',@move2center) % function move2center(~,~)% xy=get(fig,'CurrentPoint');% dis=sum((xy-[300,300]).^2);% for ii=1:6% if dis<200% surfPicA(ii).XData=surfPic(ii).XData.*resizeMat(ii,1);% surfPicA(ii).YData=surfPic(ii).YData.*resizeMat(ii,2);% surfPicA(ii).ZData=surfPic(ii).ZData.*resizeMat(ii,3);% else% surfPicA(ii).XData=surfPic(ii).XData;% surfPicA(ii).YData=surfPic(ii).YData;% surfPicA(ii).ZData=surfPic(ii).ZData;% end % end% % % % end end
到此,相信大家对"Python和Matlab怎么实现炫酷的3D旋转图"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
图片
文件
立方体
运行
源码
照片
代码
内容
对象
文件夹
电力
电力系统
算法
系统
素材
网站
网页
页码
之美
准备
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
竞彩足球软件开发
苹果数据库登录
怎么把光影弄进服务器
insert 重复数据库
北京买啦网络技术有限公司
wifi网络安全密钥忘了
宝德数据库服务器
思维导图数据库原理
杭州煎饼网络技术哪个小贷
方舟服务器多人保卫家园战解说
计算机通信存在的网络安全问题
大学生网络安全能力大赛答案
安卓软件开发人脸识别
集美大学计算机网络技术
我的世界最危险的服务器怎么生存
服务器连接不到数据
软件开发人员的平均工资
石首公安局网络安全大队大队长
装数据库
在希望之村中怎么选择服务器
自己做数据库管理系统
网络技术应用方案
数据库date类型介绍
中专网络技术教材
软件开发工作验收单
华为服务器管理卡设置在哪里
数据库综合查询与视图操作
德惠智能网络技术咨询口碑推荐
nport串口服务器的dns
服务器花生壳外网访问