您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“怎么利用Python拍攝延時(shí)攝影”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“怎么利用Python拍攝延時(shí)攝影”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上。
(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda,它內(nèi)置了Python和pip.
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn)。
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install moviepy pip install pypiwin32 pip install pillow
本文所有代碼均開源在倉庫
為了實(shí)現(xiàn)定時(shí)拍攝的邏輯,我們需要用到pypiwin32模塊和pillow模塊,在之前的這篇文章中有介紹過:
超方便的 Python 自動(dòng)喚醒窗口截圖腳本
分為三個(gè)步驟:
1. 獲得游戲窗口界面
2. 獲得游戲界面大小
3. 截圖
每隔N秒定時(shí)循環(huán)執(zhí)行以上三個(gè)步驟,代碼如下:
# main.py # Python實(shí)用寶典 # 2022-03-25 import time import win32gui from PIL import ImageGrab def get_window_pos(name): name = name handle = win32gui.FindWindow(0, name) if handle == 0: return None else: return win32gui.GetWindowRect(handle), handle while True: try: (x1, y1, x2, y2), handle = get_window_pos('極限競速:地平線 4') win32gui.SetForegroundWindow(handle) img_ready = ImageGrab.grab((x1, y1, x2, y2)) img_ready.save(f"./result/{time.time()}.jpg") time.sleep(5) except Exception as e: print(e)
請注意,"極限競速:地平線 4" 要改成你對應(yīng)拍攝的游戲名稱,這樣,運(yùn)行程序后就會(huì)自動(dòng)在result文件夾下定時(shí)生成截圖:
成功截取你想要的時(shí)間段的場景圖片后,就可以進(jìn)行下面的拼接和補(bǔ)充背景音樂部分。
為了達(dá)到延時(shí)攝影的效果,我們在這一部分中將使用moviepy模塊,拼接所有圖片到一個(gè)視頻中。
當(dāng)然還要補(bǔ)充背景音樂,代碼其實(shí)非常簡單,調(diào)用了部分moviepy模塊的功能:
# jointer.py # Python實(shí)用寶典 # 2022-03-25 import os import moviepy import moviepy.video.io.ImageSequenceClip from moviepy.editor import * def pics2video(frames_dir, video_dst, music, fps=10): """ 圖片合成MP4 Args: frames_dir (str): 圖片目錄 video_dst (str): 目標(biāo)目錄 fps (int, optional): 幀數(shù). Defaults to 25. """ frames_name = sorted(os.listdir(frames_dir)) frames_path = [frames_dir+frame_name for frame_name in frames_name] clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(frames_path, fps=fps) audio_clip = AudioFileClip(music).volumex(0.5) audio = afx.audio_loop( audio_clip, duration=clip.duration) final_video = clip.set_audio(audio) final_video.write_videofile(video_dst, codec='libx264') music = '打上花火.mp3' frames_dir = './result/' video_dst = 'screenshots.mp4' pics2video(frames_dir, video_dst, music)
1.將你的音樂放在當(dāng)前目錄下,修改music變量為對應(yīng)的文件名。
2.調(diào)整你想要的fps參數(shù)——幀數(shù),這個(gè)值越低,畫面越順暢。
運(yùn)行此文件后就會(huì)在當(dāng)前文件夾下生成 'screenshots.mp4'. 這個(gè)就是我們的處理結(jié)果了,雙擊打開試試吧
讀到這里,這篇“怎么利用Python拍攝延時(shí)攝影”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。