Heim >Backend-Entwicklung >Python-Tutorial >So fügen Sie mehrere Bilder basierend auf Python zu MP4-Videos zusammen

So fügen Sie mehrere Bilder basierend auf Python zu MP4-Videos zusammen

WBOY
WBOYnach vorne
2023-05-15 22:22:042808Durchsuche

1. Module, die übertragen werden müssen

1. Imageio-Modul

Python-Modul imageio ist eine Bibliothek zum Lesen und Schreiben von Bild- und Videodaten. Es unterstützt mehrere Formate und kann mit NumPy-Arrays arbeiten.

Im Folgenden sind einige Schlüsselfunktionen aufgeführt:

  • imageio.imread(): Bilddaten aus der Datei lesen und ein NumPy-Array zurückgeben.

  • imageio.imwrite(): Schreiben Sie ein NumPy-Array in eine Datei.

  • imageio.mimsave(): Speichern Sie eine Liste mehrerer Bildrahmen als Animationsdatei (z. B. GIF).

  • imageio.get_reader(): Ruft ein Objekt ab, mit dem das animierte Bild in der angegebenen Datei Bild für Bild gelesen wird.

  • imageio.get_writer(): Ruft ein Objekt ab, mit dem animierte Bilder Bild für Bild in die angegebene Datei geschrieben werden.

Mit diesen Funktionen können Sie verschiedene Bild- und Videodatenformate einfach lesen, schreiben und verarbeiten.

2. Bildmodul

PIL ist eine häufig verwendete Bildverarbeitungsbibliothek. Das Bildmodul ist ein wichtiges Modul. Es bietet verschiedene Bildoperations- und -verarbeitungsfunktionen.

Im Folgenden sind einige Hauptfunktionen und ihre Funktionen im Bildmodul aufgeführt:

  • open(): Öffnen Sie das Bildobjekt des angegebenen Dateipfads und geben Sie es zurück.

  • fromarray(): Numpy-Array oder PIL-Bildobjekt in PIL-Bildobjekt konvertieren.

  • new(): Erstellt ein neues leeres Bildobjekt mit angegebener Größe, Modus und Farbe.

  • save(): Speichern Sie das Bild als Datei im angegebenen Format.

  • resize(): Ändern Sie die Größe des Bildes.

  • crop(): Beschneidet den angegebenen Bereich des Bildes.

  • rotate(): Drehen Sie das Bild um einen angegebenen Winkel.

  • show(): Bild anzeigen.

Darüber hinaus gibt es viele weitere häufig verwendete Funktionen, wie das Anpassen von Helligkeit und Kontrast, das Anwenden von Filtern und mehr. Diese Funktionen können uns bei der Implementierung verschiedener komplexer Bildverarbeitungsaufgaben helfen, und es gibt normalerweise einige Parameter, mit denen das Verhalten der Funktion weiter angepasst werden kann. Informationen zur spezifischen Verwendung finden Sie in der entsprechenden Dokumentation.

2. Um mehrere Bilder zu einem MP4-Video zusammenzuführen

Verwenden Sie PIL (Python Imaging Library) oder OpenCV in Python, um jedes Bild zu lesen.

Verwenden Sie die Bibliothek imageio eines Drittanbieters, um mehrere Bilder in einer Videodatei zusammenzuführen.

Konfigurieren Sie Parameter wie die Anzahl der Videobilder, die Videogröße und die Videowiedergabegeschwindigkeit der generierten Videodatei.

Das Folgende ist ein einfacher Beispielcode:

import os
import imageio
from PIL import Image

# 设置生成的视频文件名和路径
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))

# 将图片转换为视频
fps = 30  # 每秒钟30帧
with imageio.get_writer(filepath, fps=fps) as video:
    for image in images:
        frame = image.convert('RGB')
        video.append_data(frame)

Das Implementierungsprinzip besteht darin, alle Bilddateien, die zusammengeführt werden müssen, zu lesen und in einer Liste zu speichern. Verwenden Sie dann die Funktion get_writer() der Imageio-Bibliothek, um ein Video-Writer-Objekt zu erstellen und die Wiedergabegeschwindigkeit (fps) des Videos festzulegen. Während der Schleife wird dann jedes Bild in der Liste gelesen und dem Videobild hinzugefügt, nachdem es in ein Format mit RGB-Farbmodus konvertiert wurde. Die endgültige Ausgabe ist eine Videodatei, die alle Zielbilder kombiniert.

3. Optimieren und verbessern

Parallelisieren Sie das Programm, um die Verarbeitung mehrerer Bilder zu beschleunigen. Hinweis: Die folgende Methode ist möglicherweise nicht die optimale Methode

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

# 设置生成的视频文件名和路径
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))


# 将图片转换为视频文件
fps = 30  # 每秒钟30帧
with imageio.get_writer(filepath, fps=fps) as video:
    for image in images:
        video.append_data(image)

Das ThreadPoolExecutor-Objekt in der Bibliothek concurrent.futures wird hier für die Parallelverarbeitung verwendet. Suchen und lesen Sie zunächst im Hauptthread alle PNG-Bilder, die im aktuellen Arbeitsverzeichnis zusammengeführt werden müssen, und erstellen Sie eine Aufgabenliste. Senden Sie die Aufgabe dann an den Thread-Pool und stellen Sie sicher, dass die Zieldatei schnell und asynchron verarbeitet werden kann. Nachdem alle PNG-Bilder verarbeitet wurden, werden sie in einer Bilderliste gespeichert und schließlich in Videos umgewandelt.

Das obige ist der detaillierte Inhalt vonSo fügen Sie mehrere Bilder basierend auf Python zu MP4-Videos zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen