丨圖像處理庫(kù)如何實(shí)現(xiàn)長(zhǎng)圖拼接_第1頁(yè)
丨圖像處理庫(kù)如何實(shí)現(xiàn)長(zhǎng)圖拼接_第2頁(yè)
丨圖像處理庫(kù)如何實(shí)現(xiàn)長(zhǎng)圖拼接_第3頁(yè)
丨圖像處理庫(kù)如何實(shí)現(xiàn)長(zhǎng)圖拼接_第4頁(yè)
丨圖像處理庫(kù)如何實(shí)現(xiàn)長(zhǎng)圖拼接_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

不過,幸運(yùn)的是,雖然直接使用開源軟件不夠友好,但如果通過Python來調(diào)用這些開源Python是如何調(diào)用外部命為了讓你了解Python是如何操作這些開源軟件的,我先來給你介紹一下Python調(diào)用外我們要想使用Python語(yǔ)言之外的功能,要依靠?jī)纱笸緩剑簩?dǎo)入函數(shù)庫(kù)和調(diào)用外在第一講我使用的xlrd庫(kù)是通過importxlrd命令導(dǎo)入到Python語(yǔ)言中的,Python語(yǔ)言默認(rèn)是不支持Excel的。那么通過導(dǎo)入函數(shù)庫(kù),Python就可以獲得對(duì)Excel的操作能還有一種情況是,需要操作PythonPytonsubproces模塊來實(shí)現(xiàn)。這個(gè)模塊的實(shí)現(xiàn)機(jī)制是:它的run()函數(shù)的參數(shù)可以指定一個(gè)可以運(yùn)行的程序的路徑,而Python根據(jù)這個(gè)路徑來運(yùn)行可執(zhí)行文件,然后再根據(jù)運(yùn)行結(jié)果,以及Python這個(gè)實(shí)現(xiàn)機(jī)制并不難,我給你寫一段簡(jiǎn)單的程序,幫你理解Python是怎樣調(diào)用外部命令的。這里以macOS系統(tǒng)為例,我們通過Python獲取當(dāng)前 代代123456789fromsubprocessimportrun,Popen,cmd1=["ls",returncode=CompletedProcess(args=['ls',returncode=0)#returncode是“l(fā)s.”的退出狀態(tài)碼.#通常來說,一個(gè)為0的退出碼表示進(jìn)程運(yùn)行正#使用Popen獲取程序運(yùn)行結(jié)withPopen(cmd1,=True,stdout=PIPE,stderr=PIPE,encoding="utf-8")as#如果程序在timeout秒后未執(zhí)行完成,會(huì)拋出TimeoutExpired#從標(biāo)準(zhǔn)輸出 數(shù)據(jù),知道文件結(jié)files這段代碼中最的函數(shù)是r()函和Popnsubproces函數(shù)實(shí)現(xiàn)的外部程序調(diào)用。我來為你重點(diǎn)剖析一下它們的功能、參數(shù),以及何時(shí)選擇r()函數(shù)、何時(shí)選擇Popn為了實(shí)現(xiàn)Python調(diào)用可執(zhí)行文件,首先在代碼的第一行,我是這樣編寫的代代1fromsubprocessimportrun,Popen,這樣一行代碼,它和我第一講使用的import式導(dǎo)入函數(shù)庫(kù)的區(qū)別是,這種形式可以讓你如果你“importsubprocess”方式導(dǎo)入subprocess的話,在調(diào)用run數(shù)的時(shí)候,就需要用“庫(kù).函數(shù)”的形式在Python中使用庫(kù)當(dāng)中的函數(shù),即“subprocess.run()”。在你多次調(diào)用run()函數(shù)時(shí),代碼會(huì)較長(zhǎng),那么使用“fromimport”方式導(dǎo)入,就可以在當(dāng)前代碼文件中直接使用run()數(shù),為代碼的閱讀帶來更接下來,我定義了一個(gè)變量cmd1。這個(gè)變量的值是macOS命令行能夠運(yùn)行的“l(fā)s.”命 run()1變量一樣。如果你需要運(yùn)行其令,把代碼中的s替換為你想要運(yùn)行的其他程序就行了。為了讓Python自動(dòng)化處理程序更強(qiáng)大,除了運(yùn)行程序外,你還可以得到可執(zhí)行程序的運(yùn)行結(jié)果。在這種情況下,我們就需要使用Popen類替代run()函數(shù)實(shí)現(xiàn)外部程序的可以看到,我在代碼的第12行先通過Popen類執(zhí)行了“l(fā)s.”命令,接著通過參數(shù)stdout=PIPE命令的執(zhí)行結(jié)果放入到PIPE后再communicate()數(shù)將PIPE中的內(nèi)容出來,存放到files變量中,這樣就實(shí)現(xiàn)了命令執(zhí)行結(jié)果的功能。這個(gè)功能是無法在run()函數(shù)實(shí)現(xiàn)的,因此在你需要通過Python程序執(zhí)行結(jié)果的時(shí)候,就可以選擇Popen類。不過如果只需要運(yùn)行可執(zhí)行程序,那使用run()函數(shù)就能滿足你的要求了。如果你想更深入地了解它們,我建議你閱讀subprocess 庫(kù)的文。以上就是我用subprocess庫(kù)實(shí)現(xiàn)Python調(diào)用可執(zhí)行程序的方法。Python之所以被我們稱作最佳的“膠水語(yǔ)言”,就是因?yàn)樗茌p易“粘合”可執(zhí)行程序。利用Python靈活的接下來,我們就使用subprocess來實(shí)現(xiàn)長(zhǎng)圖拼接和拼接的功能長(zhǎng)圖當(dāng)我進(jìn)行文案推廣的時(shí)候,需要將多個(gè)拼接成一個(gè)長(zhǎng)圖。拼接的功能本身是不具備的,因此就需要引入外部命令來實(shí)現(xiàn)拼接功能我在macOS平臺(tái)上找到了一個(gè)非常強(qiáng)大的圖像處理軟件叫做ImageMagick,它能對(duì)圖片進(jìn)行編輯、合并、切割、旋轉(zhuǎn)等90多種操作。ImageMagick軟件實(shí)現(xiàn)拼接代代12.jpgn.jpg最終合成結(jié)果在這段命令格式中,se命令的參數(shù)包含了多個(gè)文件,每個(gè)需要對(duì)照著文件將的路徑和文件名寫在參數(shù)中。如果手工輸入名稱,不僅效率低,而且容易遺漏。另外,如果需要大量重復(fù)使用te,還需要精細(xì)調(diào)整合并結(jié)果,給te程序增加很多參數(shù)。因此,我就可以通過Python調(diào)用可執(zhí)行程序的subprocess庫(kù),對(duì)composite拼長(zhǎng)圖的代代123456789p=#增加命c(diǎn)md=#增加參forxinp.iterdir()ifPurePath(x).match('*.jpg'):#增加結(jié)由于composite可以把長(zhǎng)圖合成的結(jié)果直接輸出為文件,因此采用run()函數(shù)即可實(shí)現(xiàn)程序執(zhí)行的功能。另外,當(dāng)你需要調(diào)整composite參數(shù)時(shí),可以直接修改cmd變量的值,并不需要改動(dòng)程序其他部分。當(dāng)你要對(duì)新的一組進(jìn)行合成的時(shí)候,重新設(shè)置jpg_path總結(jié)來說,使用Python調(diào)用composite合并的好處就是:你不用記住程序使用的繁雜的命令行參數(shù),也不用記住運(yùn)行邏輯,因?yàn)镻ython程序已經(jīng)事先把邏輯編寫好了。的拆分與合在了解了如何使用subprocess調(diào)用composite實(shí)現(xiàn)長(zhǎng)圖拼接之后,我再給你講一下如何使用subprocess庫(kù)調(diào)用可執(zhí)行程序,來進(jìn)行的拆分與合并。我們先來學(xué)習(xí)下拆分的原理你在電腦本地經(jīng)常見到的格式是MP4,但如果要把放在互聯(lián)網(wǎng)上,為了減少首次的加載時(shí)間,你就必須把一個(gè)MP4切分成多個(gè)文件,而且切分之后還需要把格式轉(zhuǎn)換為.TS格式的文件。為什么不直接使用4格式,把4成.S格式呢?這是因.S以保證多個(gè)文件之間的無縫,而且還會(huì)保證不會(huì)在下一個(gè)文件的候,出現(xiàn)破音或畫面中斷等影響用戶體驗(yàn)的情況。當(dāng)一個(gè)切分成多個(gè)文件的時(shí)候,就要考慮文件的順序問題了。為了記錄順序,我們需要在切分之后引入一個(gè)索引文件,這個(gè)索引文件不用手動(dòng)編寫,我們直接使Fmpeg命令就行了,它可以實(shí)現(xiàn)格式的轉(zhuǎn)換、合并和拆分。Fmpeg分之后,自動(dòng)產(chǎn)生一個(gè)以.M3U8結(jié)尾的索引文件。我來解釋一下這個(gè)索引文件。M3U8文件是指UDF-8編碼格式下的M3U索引,看到這兒你應(yīng)該就能明白了,想要使用Python進(jìn)行拆分,我們首先需要FFmpeg命令,然后通過Python設(shè)置FFmpeg的參數(shù),最后再指定MP4文件和.TS文件的路徑,代代123456789fromsubprocessimport=segment_time=m3u8_list==-cmd1=["ffmpeg","-i",,"-f","segment","-segment_time","mpegts","-segment_list",m3u8_list,"-c","copy","-bsf:v",在代碼中,我通過FFmpegMP4成了多段TS件。你要想實(shí)現(xiàn)相同功能,首先需要在電腦中安裝FFmpeg命令,它的地址為:。為了實(shí)現(xiàn)MP4格式的分割,需要使用ffmpeg常多的參數(shù)。不過使用Python行M3U8和TS文件指定為四個(gè)變量,這樣只修改這四個(gè)變量,就可以實(shí)現(xiàn)拆分功能了。的格式是M3U8和TS文件。那又怎么把它們合并成MP4文件呢?你同樣可以使用FFmpeg命令,但是FFmpeg的參數(shù)不同。我將FFmpeg令寫在這代代1ffmpeg-allowed_extensionsALL- ist如果你不想背誦這么長(zhǎng)的參數(shù),完全可以仿照Python整合拆分的代碼來實(shí)現(xiàn)合并功能。先FFmpeg命令和參數(shù)放入列表,再把M3U8文件和MP4文件放入變量,便于你合所以你看,相比直接使用FFmpeg,subprocess用FFmpeg勢(shì)就在于兩點(diǎn),一是如果你是剪輯的專業(yè)工作者,肯定要大量使用FFmpeg更復(fù)雜的功能,這些功能對(duì)應(yīng)的參數(shù)一般都比較多,而且參數(shù)很多都使用了簡(jiǎn)寫和大小寫,很難。但要是使用Python調(diào)用的話,你可以直接更改要操作的文件路徑,就不必記錄大量的參數(shù)。小最后,我來為你總結(jié)一下這節(jié)課的主要內(nèi)通過對(duì)subprocess的講解,你知道了怎樣通過它實(shí)現(xiàn)Python載外部可執(zhí)行程序,我也為你講解了長(zhǎng)圖拼接和拆分合并的兩個(gè)案例,幫你更好地理解Python為什么會(huì)我還想強(qiáng)調(diào)一下,通過Python調(diào)用可執(zhí)行程序的用法非常常見,特別是在多處理、自然科學(xué)、AI等領(lǐng)域里。在這些專業(yè)領(lǐng)域,為了加快計(jì)算速度,通常會(huì)使用C++語(yǔ)言實(shí)這些專業(yè)程序參數(shù)多、功能單一,且使用命令行執(zhí)行,當(dāng)你需要多次執(zhí)行這些程序,又不想背誦它們的參數(shù)的時(shí)候,就可以利用Python的判斷循環(huán)功能,結(jié)合C++最后,我也把這節(jié)課的代碼附上,你可以查看。本講代思考在最后也請(qǐng)你思考一下,你在工作當(dāng)中是否會(huì)使用命令行工具呢?它們能否用Python 科技所有 不 售賣。頁(yè)面已增加防盜追蹤,將依 上一 04|函數(shù)與字典:如何實(shí)現(xiàn)多次替下一 06|jieba分詞:如何基于感彩進(jìn)行單詞數(shù)量統(tǒng)計(jì)精精選留言Sicolas展WindowsLinux和MACphotoshop的一個(gè)工具,主2 2老師,是否可以利用pythonexcel中的公司l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論