9張照片弄成一個(gè)九宮格
關(guān)注:23 發(fā)布時(shí)間:2022-02-02 19:13:01
我們很多人都有每天用手機(jī)刷朋友的習(xí)慣。或許大家都注意到了,比較近微信朋友圈和微博都開(kāi)始玩9方圖了。
可以說(shuō),把一張圖,或者一張動(dòng)圖,或者視頻,分成9份,發(fā)給朋友圈,很有意思。
,博主們利用python、opencv、pyqt5的知識(shí),幫你實(shí)現(xiàn)任意圖像、視頻、動(dòng)畫(huà)的9格原理。
文末還有生成9格的pyqt5源代碼和exe的可執(zhí)行文件。
生成9格圖片
一般來(lái)說(shuō),我們生成的9個(gè)正方形的原圖一定是正方形。畢竟朋友圈和微博整體的9個(gè)方格都是正方形。
但是為了完成9格,博主只需要?jiǎng)h除下面的代碼就可以完成任意圖形的9格,但是大部分平臺(tái)不支持非正方形9格圖片。
下面,我們直接把一張圖片分成9份,代碼如下:
#如果不是os . path . exists(" image "): os . make readers(" image ")image=cv2 . imead(image filename,1) #刪除代碼段標(biāo)題高度,寬度,n=image . shapeif width=height : image=cv2 . resize(image,(width,width))height=width else : image=cv2 . resize(image,(height,height))width=height #刪除結(jié)束高度* (i 1),j *寬度,寬度* (j 1))結(jié)果=圖像[i * height:height * (i 1),j * width : width *(j 1)]打印(" image/" str(x)")。 png")cv2.imwrite("image/" str(x)"。" png ",結(jié)果)x=1
這里,我們是一個(gè)橫切算法。首先,在j循環(huán)結(jié)束之前我是不會(huì)改變的,所以我們可以保證之前的分段永遠(yuǎn)是三分之一。
后一部分是寬度分割,第一部分是j=0,后一部分是j=1作為第一個(gè)三分之一。經(jīng)過(guò)一個(gè)周期,j=1,即(width,width*2),比較后當(dāng)j=2時(shí),(width * 2,width*3)。(刪除紙條中間的代碼,你就得到9份任意圖。)
i和j的算法是一樣的,原理如下。記住這里是寬度,高度是用整個(gè)寬度和高度除以3得到的。
當(dāng)然,用繪圖工具分割有點(diǎn)不規(guī)則。請(qǐng)見(jiàn)諒,讀者可以把它當(dāng)成常規(guī)。同時(shí),如果我和j改變位置,那么圖片就是一個(gè)垂直分割算法。會(huì)從左到右,從上到下切割。
生成9方形網(wǎng)格動(dòng)畫(huà)
動(dòng)圖可以通過(guò)兩種形式生成:一種是提供一個(gè)短視頻,轉(zhuǎn)換成動(dòng)圖;一種是直接提供一個(gè)gif動(dòng)畫(huà),直接剪切。
短視頻生成動(dòng)畫(huà)9格
首先,我們來(lái)看一看,提供一個(gè)簡(jiǎn)短的視頻分割后動(dòng)畫(huà)。代碼如下:
#短視頻生成9-grid動(dòng)畫(huà)defgrid 9 _ gif(srcvideofilename): if not os . path . exists(" gif "): os . make readers(" gif ")all _ frames=[]cap=cv2。video capture(srcvideofilename)fps=cap . get(cv2。cap_prop_fps)為i在范圍(9)內(nèi): list=[]all _ frames . append(list)while(cap . isopended): ret,frame=cap . readif ret : height,width,n=frame . shapeif width=height : frame=cv2 . r
esize(frame,(width,width))height=width else : frame=cv2 . resize(frame,(height,height))width=height height=int(height/3)width=int(width/3)frame _ list=[]for i in range(0,3):for j in range(0,3): result=frame[i * height : height *(i ^ 1),j * width 3360 width *(j ^ 1)]frame _ list . append(result)append(image)else : break for index,frames in zip(range(9),all _ frames): imageio . mimsave(" gif/" str(index 1)")。gif ",幀," gif ",持續(xù)時(shí)間=float(1/fps))cap.release
事實(shí)上,可以看出中間的分割算法與圖片中的完全相同。因?yàn)橐曨l本身是由單一畫(huà)面組成的。
在這里,我們只需要對(duì)視頻的每一張圖片進(jìn)行分段,然后分別存儲(chǔ)。看完之后,我們可以把每個(gè)部分轉(zhuǎn)換成gif。(至于每幀運(yùn)動(dòng)畫(huà)面的間隔時(shí)間,是視頻的1/fps)
gif直接生成動(dòng)畫(huà)9格
對(duì)于gif,opencv不直接處理動(dòng)畫(huà)的功能。所以比較簡(jiǎn)單的方法就是把動(dòng)畫(huà)轉(zhuǎn)換成視頻,然后通過(guò)上面的代碼進(jìn)行處理。
代碼如下:
# gif生成9方畫(huà)defgrid 9 _ gif 2(srcgiffilename):
clip=mp。視頻文件剪輯(srcgiffilename)
clip . write _ video file(" gifvideo . mp4 ")
grid9_gif("gifvideo.mp4 ")
這里使用moviepy庫(kù)將gif轉(zhuǎn)換成視頻,然后由上面的grid9_gif處理。
需要注意的是,目前各大平臺(tái)都不支持動(dòng)畫(huà)的自動(dòng)播放。比如微博必須動(dòng)畫(huà)才能移動(dòng)。如果以后支持動(dòng)畫(huà)的自動(dòng)播放,那么動(dòng)畫(huà)9的這種分割是可以完美實(shí)現(xiàn)的。目前效果和靜止圖片一樣,只能看到每張運(yùn)動(dòng)圖片的第一幀。
生成9格視頻
生成9格視頻,不用拆分。因?yàn)橐曨l本身就是一個(gè)整體,沒(méi)有哪個(gè)社交軟件可以在同一個(gè)朋友圈或者微博里發(fā)9個(gè)視頻。
所以我們只需要在視頻中間畫(huà)四條分割線就可以完成9格視頻的生成。代碼如下:
# generate 9-grid video def grid 9 _ video(srcvideofilename,output video filename): cap=cv2。video capture(srcvideofilename)fps=cap . get(cv2。cap_prop_fps)寬度=int(cap.get(cv2。cap_prop_frame_width))高度=int(cap.get(cv2。cap _ prop _ frame _ height))fourcc=cv2。video writer _ fourcc(* " mjpg ")video writer=cv2。視頻編寫(xiě)器(輸出視頻文件名)。avi ",fourcc,fps,(width,height))i=1 while(cap . isopended): ret,frame=cap . readif ret : cv 2 . line(frame,(0,int(height/3)),(width,int(height/3)),(255,255,255),3)cv2.line(frame,(0,int(height/3 * 2)),(width,int(height/3 * 2)),(255,255,255)
pan class="hljs-number"0),(int(width/3),height,(255,255,255),3)cv2.line(frame,(int(width/3 * 2),0),(int(width/3 * 2),height,(255,255,255),3)video writer . write(frame)else : break cap . release
代碼很簡(jiǎn)單,就是給每個(gè)視頻畫(huà)面畫(huà)4條分割線。運(yùn)行后,效果如下:
使用pyqt5打包到exe接口
對(duì)于我們程序員來(lái)說(shuō),部署好的python環(huán)境可以直接運(yùn)行上面的代碼,生成你想要的9格素材。但是對(duì)于不是程序員的伙伴來(lái)說(shuō),提供一個(gè)可運(yùn)行的程序往往更友好。
在這里,博主會(huì)通過(guò)pyqt5將上述功能打包成gui界面程序。因?yàn)榇a太多,對(duì)pyqt5感興趣的可以直接去github。
上一篇:你有微信焦慮嗎
下一篇:微信視頻對(duì)方是黑屏
猜你喜歡
-
照片九宮格怎么弄114人支持
如何用手機(jī)拍照制作九宮格?只需要4步。這樣送朋友真好看!國(guó)慶節(jié)中秋節(jié)過(guò)去了。你拍過(guò)照片嗎?拍照后,很多朋友都喜歡和朋友分享。今天教大家一招,,讓你發(fā)的朋友圈更好看,和用手機(jī)就…
-
漲跌幅是什么意思45人支持
先說(shuō)股市漲停。我們不討論它為什么有限,也不討論它是好是壞。我們只討論這個(gè)極限給我們帶來(lái)了什么,是更多的風(fēng)險(xiǎn)還是更多的安全。既然有漲跌,也有同樣的區(qū)間a,那么就發(fā)生了有趣…
-
5g手機(jī)功能有哪些10人支持
在我看來(lái),5g手機(jī)除了5g之外,最重要的功能就是續(xù)航和視頻,因?yàn)?g手機(jī)的耗電速度比4g手機(jī)高很多,而且隨著5g網(wǎng)速的提高,短視頻已經(jīng)成為一個(gè)綜合的出口。我來(lái)說(shuō)說(shuō)自己上半年使用5g手…
-
小米分期額度怎么提出來(lái)?101人支持
小米分期付款是小米金融旗下的消費(fèi)產(chǎn)品。在商場(chǎng),可以用小米分期定額消費(fèi)。這個(gè)額度和我們常見(jiàn)的白條差不多,不能直接提現(xiàn)。如果你想提取現(xiàn)金,你必須使用某些方法。下面的小系列…
-
錢(qián)塘江觀潮最佳地點(diǎn):每年農(nóng)歷八月十八左右,是觀潮的最佳時(shí)間。這期間秋日陽(yáng)光明媚,金風(fēng)宜人。錢(qián)塘江口的海堤上,游人如織,興致盎然,爭(zhēng)奇斗艷。錢(qián)塘看秋潮最好的地方有三個(gè)。第一個(gè)…
-
狼雨seo:七個(gè)seo步驟94人支持
作為一個(gè)專(zhuān)業(yè)的seo公司級(jí)領(lǐng)導(dǎo),其seo優(yōu)化專(zhuān)家告訴大家,seo是一項(xiàng)需要足夠耐心和細(xì)致呵護(hù)的腦力勞動(dòng),主要分為八個(gè)步驟。第一步是找到關(guān)鍵詞。這是seo優(yōu)化最重要的一步,包括關(guān)鍵量…
-
新手怎么跑滴滴才能掙到錢(qián)?45人支持
雖然越來(lái)越多的司機(jī)加入滴滴。他們分為兩種人。一種是提前做好準(zhǔn)備,收集各種“情報(bào)”,咨詢很多跑滴滴的老司機(jī),做足準(zhǔn)備再開(kāi)始接單跑車(chē)。這樣的人一般會(huì)很快適應(yīng)滴滴的“生存模…
-
怎么開(kāi)通花唄收款功能59人支持
最近,小編分享了一個(gè)關(guān)于開(kāi)花店收錢(qián)的教程,引起了許多支付寶用戶的注意。最初,柏華的貨幣收集主要是為了商人的服務(wù)。但是部分支付寶賬號(hào)級(jí)別較高的個(gè)人用戶也可以按照教程完成…
-
微信詐騙怎么追回錢(qián)96人支持
日常生活中,大家都喜歡使用微信聊天或者微信支付等功能。用了這么久微信,轉(zhuǎn)賬后對(duì)方勒索你,你知道怎么辦嗎?微信轉(zhuǎn)賬后對(duì)方刪除你為好友如何追回錢(qián)?遇到這樣的問(wèn)題,教你一個(gè)技巧,追…
-
馬云手相放大97人支持
1.m型是一種特殊的手型,大多數(shù)有這種手型的人是不一樣的。通過(guò)電影和資料不難發(fā)現(xiàn),大人物馬立克云、比爾蓋茨、巴菲特都是m型,非常特別,非常相似。它是由一條貫穿南北的事業(yè)線與…
-
微信支付賬單怎么查詢72人支持
微信年賬單查詢只需六步。打開(kāi)微信,點(diǎn)擊右下角的“我”,選擇支付,點(diǎn)擊錢(qián)包,點(diǎn)擊右上角的賬單,選擇統(tǒng)計(jì),可以看到月賬單和年賬單的詳細(xì)數(shù)據(jù);我們來(lái)看看詳細(xì)的操作步驟。1.打開(kāi)微信,點(diǎn)…
-
網(wǎng)紅怎么賺錢(qián)55人支持
不說(shuō)別的,就說(shuō)李佳琪吧!前不久有消息說(shuō)李佳琪買(mǎi)了1.3億的豪宅,這錢(qián)還是別人的凈資產(chǎn)!然而,在李佳琪1.3億套豪宅曝光后,評(píng)論中有很多罵聲?因?yàn)橛泻芏嗳烁鷺侵饕粯拥囊蓡?wèn),為什么網(wǎng)紅那…
熱門(mén)十大品牌
- 2021年我國(guó)十大黃金品牌排行榜31000人
- 眼鏡品牌十大排行榜前10名26363人
- 十大證券公司排行榜前10名23243人
- 2021年我國(guó)雜志排行榜前10名20056人
- 我國(guó)十大雜志排行榜前10名16359人
- 2021我國(guó)十個(gè)宜居城市排行榜前11489人
- 男士褲子品牌十大排行榜前10名11187人
- 2021十大火熱電腦游戲排行榜前11059人
- 十大衛(wèi)生巾品牌排行榜前十名8849人
- 我國(guó)十大襪子品牌排行榜前十名8373人
微商技巧
關(guān)注人數(shù):948
關(guān)注人數(shù):381
關(guān)注人數(shù):486
關(guān)注人數(shù):353
關(guān)注人數(shù):281
微商賺不到錢(qián),絕對(duì)是思維出了問(wèn)題
關(guān)注人數(shù):310