欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python實現(xiàn)合并多張圖片轉(zhuǎn)成mp4視頻

 更新時間:2023年04月09日 14:12:48   作者:逃逸的卡路里  
隨著現(xiàn)代科技飛速發(fā)展和人們提升視覺上體驗,利用圖片生成視頻的方法,確實為工作或者提升生活體驗感做了很多成功案例,本文就來介紹一下具體實現(xiàn)方法吧

前言

隨著現(xiàn)代科技飛速發(fā)展和人們提升視覺上體驗,利用圖片生成視頻的方法,確實為工作或者提升生活體驗感做了很多成功案例:

1、簡單的幻燈片演示,如展示旅游照片、產(chǎn)品展示等;

2、改編圖片動畫,如口紅試色、時尚大片中的效果;

3、制作日記式的視頻內(nèi)容,將一段長時間內(nèi)的照片串在一起,如婚禮紀實、Baby成長記錄等;

4、制作信息圖表,如將各種數(shù)據(jù)圖表整合在一起以便展示和詮釋數(shù)據(jù)。

以上只是一些普遍運用的例子,實際上還有更廣泛的使用場景,取決于制作者的目的和創(chuàng)意。

下面咱們用python代碼實現(xiàn)多張圖片合成MP4視頻為實例,做下詳細代碼講解。

一、需要調(diào)入的模塊

1、imageio模塊

Python模塊imageio是一個用于讀取和寫入圖像及視頻數(shù)據(jù)的庫。它支持多種格式,并且可以使用NumPy數(shù)組進行操作。

以下是一些關(guān)鍵的函數(shù):

  • imageio.imread():從文件中讀取圖像數(shù)據(jù)并返回一個NumPy數(shù)組。
  • imageio.imwrite():將一個NumPy數(shù)組寫入到文件。
  • imageio.mimsave():將多個圖像幀組成的列表保存為動畫文件(例如GIF)。
  • imageio.get_reader():獲取一個對象,該對象用于逐幀讀取給定文件中的動畫圖像。
  • imageio.get_writer():獲取一個對象,該對象用于逐幀寫入動畫圖像到指定文件中。

使用這些函數(shù),可以方便地讀取、寫入和處理各種圖像及視頻數(shù)據(jù)格式。

2、Image 模塊

PIL 是 Python 中常用的圖像處理庫,Image 模塊是其中的一個重要模塊,它提供了各種圖像操作和處理的函數(shù)。

以下是 Image 模塊中一些主要函數(shù)及其作用:

  • open(): 打開并返回指定文件路徑的圖像對象。
  • fromarray(): 將 numpy 數(shù)組或 PIL 圖像對象轉(zhuǎn)換為 PIL 圖像對象。
  • new(): 創(chuàng)建一個新的指定大小、模式和顏色的空白圖像對象。
  • save(): 將圖像保存為指定格式的文件。
  • resize(): 修改圖像的大小。
  • crop(): 裁剪圖像的指定區(qū)域。
  • rotate(): 旋轉(zhuǎn)圖像指定角度。
  • show(): 顯示圖像。

除此之外,還有很多其他常用的函數(shù),例如調(diào)整亮度和對比度、應(yīng)用濾鏡等等。這些函數(shù)可以幫助我們實現(xiàn)各種復(fù)雜的圖像處理任務(wù),并且通常也會有一些參數(shù)可用于進一步調(diào)節(jié)函數(shù)的行為,具體使用時可以參考相關(guān)文檔。

二、實現(xiàn)合并多張圖片轉(zhuǎn)成 mp4 視頻

使用 Python 中的畫圖庫 PIL(Python Imaging Library)或者 OpenCV 讀取每一張圖片。

使用第三方庫 imageio 將多張圖片合并成一個視頻文件。

配置生成視頻文件的視頻幀數(shù)、視頻尺寸和視頻播放速度等參數(shù)。

以下是一個簡單的示例代碼:

import os
import imageio
from PIL import Image

# 設(shè)置生成的視頻文件名和路徑
filename = 'output.mp4'
filepath = os.path.join(os.getcwd(), filename)

# 讀取所有 PNG 圖片
images = []
for file_name in sorted(os.listdir()):
    if file_name.endswith('.png'):
        images.append(Image.open(file_name))

# 將圖片轉(zhuǎn)換為視頻
fps = 30  # 每秒鐘30幀
with imageio.get_writer(filepath, fps=fps) as video:
    for image in images:
        frame = image.convert('RGB')
        video.append_data(frame)

實現(xiàn)原理,讀取所有需要合并的圖片文件,將它們存儲到一個列表中。然后使用 imageio 庫的 get_writer() 函數(shù)創(chuàng)建一個視頻寫入器對象,并設(shè)置視頻的播放速度(fps)。之后在循環(huán)過程中,讀取列表中的每一張圖片,在將其轉(zhuǎn)換為帶有 RGB 顏色模式的格式后添加到視頻幀中。最終輸出一個合并了所有目標圖片的視頻文件。

三、優(yōu)化改進一下

將程序并行化進行處理,加快處理多張圖片的速度。注:以下方法可能并非最優(yōu)方法

import os
import concurrent.futures
import imageio
from PIL import Image

# 設(shè)置生成的視頻文件名和路徑
filename = "output.mp4"
filepath = os.path.join(os.getcwd(), filename)


def process_image(file_name):
    if file_name.endswith(".png"):
        image = Image.open(file_name)
    return image.convert("RGB")


with concurrent.futures.ThreadPoolExecutor() as executor:
    # 尋找所有 png 文件
    image_files = [file for file in os.listdir() if file.endswith(".png")]

    # 利用線程池并行處理圖像
    images = list(executor.map(process_image, image_files))


# 將圖片轉(zhuǎn)換為視頻文件
fps = 30  # 每秒鐘30幀
with imageio.get_writer(filepath, fps=fps) as video:
    for image in images:
        video.append_data(image)

這里使用 concurrent.futures 庫中的 ThreadPoolExecutor 對象進行并行處理。首先在主線程中尋找讀取當前工作目錄下的所有需要合并的 PNG 圖片,創(chuàng)建任務(wù)列表。然后將任務(wù)提交給線程池中并保證能夠快速、異步地處理目標文件。在處理完所有 PNG 圖片之后,將其存儲到一個 images 中的列表中并最后轉(zhuǎn)換成視頻。

總結(jié)

以上就是今天要講的內(nèi)容,本文僅僅簡單介紹了python代碼實現(xiàn)圖片轉(zhuǎn)成視頻的使用,而imageio中提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。

注意,由于 GIL 的存在,Python 的多線程并不總能帶來真正的性能提升。如果性能是關(guān)鍵,請考慮使用更優(yōu)秀的 Python 解釋器、使用類似 joblib 的庫以及使用其他語言編寫多線程實現(xiàn)。

到此這篇關(guān)于基于Python實現(xiàn)合并多張圖片轉(zhuǎn)成mp4視頻的文章就介紹到這了,更多相關(guān)Python合并圖片轉(zhuǎn)成視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python與Matlab混合編程的實現(xiàn)案例

    Python與Matlab混合編程的實現(xiàn)案例

    本文主要介紹了Python與Matlab混合編程的實現(xiàn)案例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • python命令行執(zhí)行腳本找不到模塊ModuleNotFoundError問題

    python命令行執(zhí)行腳本找不到模塊ModuleNotFoundError問題

    這篇文章主要介紹了python命令行執(zhí)行腳本找不到模塊ModuleNotFoundError問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python妙用之編碼的轉(zhuǎn)換詳解

    python妙用之編碼的轉(zhuǎn)換詳解

    在日常滲透,漏洞挖掘,甚至是CTF比賽中會遇到各種編碼,常常伴隨著這些編碼之間的各種轉(zhuǎn)換。下面這篇文章主要介紹了python中編碼轉(zhuǎn)換妙用的相關(guān)資料,需要的朋友們可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • python日志記錄模塊實例及改進

    python日志記錄模塊實例及改進

    許多應(yīng)用程序中都會有日志模塊,用于記錄系統(tǒng)在運行過程中的一些關(guān)鍵信息,以便于對系統(tǒng)的運行狀況進行跟蹤。在python中,我們不需要第三方的日志組件,因為它已經(jīng)為我們提供了簡單易用、且功能強大的日志模塊:logging。
    2017-02-02
  • 教你用 Python 實現(xiàn)微信跳一跳(Mac+iOS版)

    教你用 Python 實現(xiàn)微信跳一跳(Mac+iOS版)

    這幾天看網(wǎng)上好多微信跳一跳破解了,不過都是安卓的,無奈蘋果不是開源也沒辦法。本文給大家分享用 Python 來玩微信跳一跳(Mac+iOS版),具體實現(xiàn)代碼大家參考下本文
    2018-01-01
  • Python的幾種主動結(jié)束程序方式

    Python的幾種主動結(jié)束程序方式

    這篇文章主要介紹了Python的幾種主動結(jié)束程序方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • python實現(xiàn)簡單的購物程序代碼實例

    python實現(xiàn)簡單的購物程序代碼實例

    這篇文章主要介紹了python實現(xiàn)簡單的購物程序代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 基礎(chǔ)的十進制按位運算總結(jié)與在Python中的計算示例

    基礎(chǔ)的十進制按位運算總結(jié)與在Python中的計算示例

    按位運算是計算機學(xué)習(xí)中的基礎(chǔ),Python完全支持位運算符從而幾乎可以直接顯示出位運算的結(jié)果,這里我們稍微總結(jié)一下基礎(chǔ)的十進制按位運算總結(jié)與在Python中的計算示例
    2016-06-06
  • PyTorch中apex安裝方式和避免踩坑

    PyTorch中apex安裝方式和避免踩坑

    本文主要介紹了PyTorch中apex安裝方式和避免踩坑,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python的Pandas時序數(shù)據(jù)詳解

    Python的Pandas時序數(shù)據(jù)詳解

    這篇文章主要為大家詳細介紹了Pandas時序數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論