iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python&Matlab实现炫酷的3D旋转图
  • 306
分享到

Python&Matlab实现炫酷的3D旋转图

2024-04-02 19:04:59 306人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言1.python爬取美女照片 1.1 留恋忘返的网址1.2 Python代码1.3 结果 2.Python实现2.1 条件准备2.2 运行展示 

前言

我们今天的任务很明确,我先系统梳理一下:

1.先用Python爬取一波漂亮的美女照片;

2.然后Python中炫酷的代码实现;

3.最后用matlab伺候,得到相同的结果。

1.Python爬取美女照片 

1.1 留恋忘返的网址

站长素材-分享综合设计素材的平台 (chinaz.com)

1.2 Python代码

 
#~~~~欢迎关注公众号:电力系统与算法之美~~~~~~~~~~~~·
 
#~~~~~~~~~导入相关库~~~~~~~~~~~~~~~~~~~~·
import urllib.request
from 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实现

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>css3制作3D图片立方体旋转特效</title>
<link rel="stylesheet" href="CSS/index.css" rel="external nofollow" >
</head>
<body>
<!---->
<div class="wrap">
<!--	-->
<div class="cube">
	<!--前面图片 -->
	<div class="out_front">
		<img src="img/1.jpg" class="pic">
	</div>
	<!--后面图片 -->
	<div class="out_back">
		<img src="img/2.jpg" class="pic">
	</div>
	<!--左图片 -->
	<div class="out_left">
		<img src="img/3.jpg" class="pic">
	</div>
	<!--右图片 -->
	<div class="out_right">
		<img src="img/4.jpg" class="pic">
	</div>
	<!--上图片 -->
	<div class="out_top">
		<img src="img/5.jpg" class="pic">
	</div>
	<!--下图片 -->
	<div class="out_bottom">
		<img src="img/6.jpg" class="pic">
	</div>
	<!--小正方体 --> 
	<span class="in_front">
		<img src="img/7.jpg" class="in_pic">
	</span>
	<span class="in_back">
		 <img src="img/8.jpg" class="in_pic">
	</span>
	<span class="in_left">
		<img src="img/9.jpg" class="in_pic">
	</span>
	<span class="in_right">
		<img src="img/10.jpg" class="in_pic">
	</span>
	<span class="in_top">
		<img src="img/11.jpg" class="in_pic">
	</span>
	<span class="in_bottom">
		<img src="img/12.jpg" class="in_pic">
	</span>
</div>
</div>
</body>
</html>

3.Matlab实现

3.1 运行展示

动态视频:

3.2 Matlab代码

%====欢迎关注关注号:电力系统与算法之美
function wlz3d
path='.\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旋转图的文章就介绍到这了,更多相关Python Matlab3D旋转图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python&Matlab实现炫酷的3D旋转图

本文链接: https://www.lsjlt.com/news/117354.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python&Matlab实现炫酷的3D旋转图
    目录前言1.Python爬取美女照片 1.1 留恋忘返的网址1.2 Python代码1.3 结果 2.Python实现2.1 条件准备2.2 运行展示 ...
    99+
    2024-04-02
  • Python和Matlab怎么实现炫酷的3D旋转图
    本篇内容主要讲解“Python和Matlab怎么实现炫酷的3D旋转图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python和Matlab怎么实现炫酷的3D旋转图”吧!1.Python爬取美女...
    99+
    2023-06-30
  • 如何使用CSS3实现酷炫的3D旋转透视
    这篇文章将为大家详细讲解有关如何使用CSS3实现酷炫的3D旋转透视,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   开始   1.CSS3 3D 转换的常用API介...
    99+
    2024-04-02
  • CSS3如何制作酷炫的3D旋转透视
    CSS3如何制作酷炫的3D旋转透视,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。立方体 3D 旋转3D 透视照片墙跳跃的音符可能上面的效果对精...
    99+
    2024-04-02
  • 怎么在CSS3中实现一个酷炫的3D旋转透视效果
    本篇文章给大家分享的是有关怎么在CSS3中实现一个酷炫的3D旋转透视效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。CSS3 3D 转换的常用API介绍首先先上一张css 3...
    99+
    2023-06-08
  • 利用Python绘制酷炫的3D地图
    目录1.重庆市3D地图2.中国3D地图一3.中国3D地图二4.中国3D地图三5.地球展示之前我们介绍了很多Python地图可视化的内容,本次主要介绍如何Python绘制3D地图,还是...
    99+
    2024-04-02
  • 基于Three.js实现酷炫3D地图效果
    目录实现效果前言使用1.修改整体的背景图可以使用颜色或用贴图改材质2. 取消地图上柱状图显示3.更换地图、更换省份、市 4.修改相机的视角,页面展示的远近角度5....
    99+
    2022-11-13
    Three.js 3D地图 Three.js 地图
  • Python如何实现炫酷的动态图
    这篇文章主要为大家展示了“Python如何实现炫酷的动态图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python如何实现炫酷的动态图”这篇文章吧。启动如果你还没安装 Plotly,只需在你的...
    99+
    2023-06-28
  • Htlm如何实现图片3D旋转
    这篇文章主要介绍了Htlm如何实现图片3D旋转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Htlm如何实现图片3D旋转文章都会有所收获,下面我们一起来看看吧。animatio...
    99+
    2024-04-02
  • html5怎么实现图片的3D旋转效果
    本篇内容主要讲解“html5怎么实现图片的3D旋转效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5怎么实现图片的3D旋转效果”吧!   完整代码如...
    99+
    2024-04-02
  • 利用JavaScript制作一个酷炫的3D图片演示
    目录前言一、页面特效效果展示二、功能描述三、功能实现前言 对于学前端的小伙伴来说,吸引你们入坑的大都是一些炫酷的页面。但往往那些页面的源代码对初学的伙伴们都不太友好。今天给大家分享一...
    99+
    2024-04-02
  • react-three-fiber实现炫酷3D粒子效果首页
    目录背景Three.js工作原理场景(Scene)相机(Camera)渲染器(renderer)网格对象(mesh)react-three-fiber画布(Canvas)3D粒子模型...
    99+
    2024-04-02
  • 如何利用JavaScript制作一个酷炫的3D图片
    这篇文章将为大家详细讲解有关如何利用JavaScript制作一个酷炫的3D图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、页面特效效果展示注:上述效果图只是部分效果,原谅我还没有学会自制gif图!二...
    99+
    2023-06-29
  • Python实现绘制3D地球旋转效果
    目录画一个地球让地球转起来画一个地球 想画一个转动的地球,那么首先要有一个球,或者说要有一个球面,用参数方程可以表示为 x​=rcosϕcosθ y=rcosϕsin&t...
    99+
    2023-02-28
    Python实现3D地球旋转效果 Python 地球旋转 Python 地球
  • 怎么用jQuery和CSS3实现的炫酷3D画廊特效
    本篇内容主要讲解“怎么用jQuery和CSS3实现的炫酷3D画廊特效”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用jQuery和CSS3实现的炫酷3D画廊...
    99+
    2024-04-02
  • vue+three.js实现炫酷的3D登陆页面示例详解
    目录前言:Three.js的基础知识关于场景关于光源关于相机(重要)关于渲染器完善效果创建一个左上角的地球使地球自转创建星星使星星运动创建云以及运动轨迹使云运动完成three.js有...
    99+
    2024-04-02
  • Python 数据可视化实现5种炫酷的动态图
    本文将介绍 5 种基于 Plotly 的可视化方法,你会发现,原来可视化不仅可用直方图和箱形图,还能做得如此动态好看甚至可交互。 那么,Plotly 有哪些好处?Plotly 的整合...
    99+
    2024-04-02
  • Python如何实现酷炫进度条
    这篇文章主要介绍了Python如何实现酷炫进度条的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python如何实现酷炫进度条文章都会有所收获,下面我们一起来看看吧。1、自定义ProgressBar最原始的办法就...
    99+
    2023-06-30
  • 使用three.js实现炫酷的酸性风格3D页面效果
      本文内容主要介绍,通过使用React+three.js技术栈,加载3D模型、添加3D文字、增加动画、点击交互等,配合样式设计,实现充满设计感的 🤢`酸性...
    99+
    2024-04-02
  • js如何实现炫酷的左右轮播图
    小编给大家分享一下js如何实现炫酷的左右轮播图,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!本文实例为大家分享了js左右轮播图的具体代码,供大家参考,具体内容如下html代码<!DO...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作