<fieldset id="gy0wc"></fieldset>
<fieldset id="gy0wc"></fieldset>
  • <ul id="gy0wc"><sup id="gy0wc"></sup></ul>
  • 當(dāng)前位置:首頁(yè) > 行業(yè)知識(shí) > 綜合

    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。

    猜你喜歡

    • 照片九宮格怎么弄

      照片九宮格怎么弄114人支持

      如何用手機(jī)拍照制作九宮格?只需要4步。這樣送朋友真好看!國(guó)慶節(jié)中秋節(jié)過(guò)去了。你拍過(guò)照片嗎?拍照后,很多朋友都喜歡和朋友分享。今天教大家一招,,讓你發(fā)的朋友圈更好看,和用手機(jī)就…

    • 漲跌幅是什么意思

      漲跌幅是什么意思45人支持

      先說(shuō)股市漲停。我們不討論它為什么有限,也不討論它是好是壞。我們只討論這個(gè)極限給我們帶來(lái)了什么,是更多的風(fēng)險(xiǎn)還是更多的安全。既然有漲跌,也有同樣的區(qū)間a,那么就發(fā)生了有趣…

    • 5g手機(jī)功能有哪些

      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)?

      小米分期額度怎么提出來(lái)?101人支持

      小米分期付款是小米金融旗下的消費(fèi)產(chǎn)品。在商場(chǎng),可以用小米分期定額消費(fèi)。這個(gè)額度和我們常見(jiàn)的白條差不多,不能直接提現(xiàn)。如果你想提取現(xiàn)金,你必須使用某些方法。下面的小系列…

    • 錢(qián)塘江觀潮最佳地點(diǎn)

      錢(qián)塘江觀潮最佳地點(diǎn)78人支持

      錢(qián)塘江觀潮最佳地點(diǎn):每年農(nóng)歷八月十八左右,是觀潮的最佳時(shí)間。這期間秋日陽(yáng)光明媚,金風(fēng)宜人。錢(qián)塘江口的海堤上,游人如織,興致盎然,爭(zhēng)奇斗艷。錢(qián)塘看秋潮最好的地方有三個(gè)。第一個(gè)…

    • 狼雨seo:七個(gè)seo步驟

      狼雨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)?

      新手怎么跑滴滴才能掙到錢(qián)?45人支持

      雖然越來(lái)越多的司機(jī)加入滴滴。他們分為兩種人。一種是提前做好準(zhǔn)備,收集各種“情報(bào)”,咨詢很多跑滴滴的老司機(jī),做足準(zhǔn)備再開(kāi)始接單跑車(chē)。這樣的人一般會(huì)很快適應(yīng)滴滴的“生存模…

    • 怎么開(kāi)通花唄收款功能

      怎么開(kāi)通花唄收款功能59人支持

      最近,小編分享了一個(gè)關(guān)于開(kāi)花店收錢(qián)的教程,引起了許多支付寶用戶的注意。最初,柏華的貨幣收集主要是為了商人的服務(wù)。但是部分支付寶賬號(hào)級(jí)別較高的個(gè)人用戶也可以按照教程完成…

    • 微信詐騙怎么追回錢(qián)

      微信詐騙怎么追回錢(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)

      網(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)紅那…

    主站蜘蛛池模板: 久久96国产精品久久久| 99久久www免费人成精品| 国语自产拍精品香蕉在线播放| 蜜桃麻豆www久久国产精品 | 久久久99精品成人片中文字幕| 日韩精品区一区二区三VR| 精品久久久久久久久中文字幕| 欧洲精品视频在线观看| 亚洲国产一二三精品无码| 国产福利电影一区二区三区久久久久成人精品综合| 亚洲国产精品福利片在线观看| 久久97久久97精品免视看秋霞| 日本精品在线视频| 久久精品无码一区二区日韩AV| 亚洲AV无码久久精品色欲| 国产精品永久久久久久久久久| 国产精品久久久久天天影视| 亚洲处破女AV日韩精品| 欧美日韩精品一区二区视频| 国产欧美日韩精品专区| 久久精品国产99国产精偷| 99国产精品久久久久久久成人热| 四虎成人精品无码| 亚洲国产精品一区二区久久hs| 日韩精品电影一区亚洲| 国内精品伊人久久久久影院对白| 亚洲国产精品一区| 亚洲国产精品线在线观看| 国产人成精品午夜在线观看| 国产国产精品人在线视| 久久99精品久久久久久hb无码| 亚洲国产精品无码成人片久久| 亚洲精品无码Av人在线观看国产| 日批日出水久久亚洲精品tv| 欧美精品在线免费| 人妻VA精品VA欧美VA| 久久中文精品无码中文字幕| 久久久久久极精品久久久| 欧美国产成人精品一区二区三区 | 国产精品国色综合久久| 精品国产一区二区三区不卡|