<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們今天的任務很明確,我先系統梳理一下:
1.先用Python爬取一波漂亮的美女照片;
2.然後Python中炫酷的程式碼實現;
3.最後用matlab伺候,得到相同的結果。
#~~~~歡迎關注公眾號:電力系統與演演算法之美~~~~~~~~~~~~· #~~~~~~~~~匯入相關庫~~~~~~~~~~~~~~~~~~~~· 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)
溫馨提示:meinv這個資料夾是提前建立的。
由1中爬取的照片,我們就可以為接下來的事做準備啦。選取十二張照片,如圖:
執行出來比下面這個還炫酷:
<!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>
動態視訊:
%====歡迎關注關注號:電力系統與演演算法之美 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旋轉圖內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45