Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk menggabungkan berbilang gambar ke dalam video mp4 berdasarkan Python

Bagaimana untuk menggabungkan berbilang gambar ke dalam video mp4 berdasarkan Python

WBOY
Lepaskan: 2023-05-15 22:22:04
ke hadapan
2767 orang telah melayarinya

1. Modul yang perlu dipindahkan

1. Modul imageio

Modul Python imageio ialah perpustakaan untuk membaca dan menulis data imej dan video. Ia menyokong berbilang format dan boleh beroperasi dengan tatasusunan NumPy.

Berikut ialah beberapa fungsi utama:

  • imageio.imread(): Baca data imej daripada fail dan kembalikan tatasusunan NumPy.

  • imageio.imwrite(): Tulis tatasusunan NumPy pada fail.

  • imageio.mimsave(): Simpan senarai berbilang bingkai imej sebagai fail animasi (seperti GIF).

  • imageio.get_reader(): Mendapatkan objek yang digunakan untuk membaca imej animasi dalam fail yang diberikan bingkai demi bingkai.

  • imageio.get_writer(): Mendapat objek yang digunakan untuk menulis imej animasi bingkai demi bingkai ke fail yang ditentukan.

Menggunakan fungsi ini, anda boleh membaca, menulis dan memproses pelbagai format data imej dan video dengan mudah.

2. Modul imej

PIL ialah perpustakaan pemprosesan imej yang biasa digunakan dalam Python Modul Imej adalah modul penting di antaranya.

Berikut ialah beberapa fungsi utama dalam modul Imej dan fungsinya:

  • open(): Buka dan kembalikan objek imej bagi laluan fail yang ditentukan.

  • fromarray(): Menukar tatasusunan numpy atau objek imej PIL kepada objek imej PIL.

  • new(): Cipta objek imej kosong baharu dengan saiz, mod dan warna yang ditentukan.

  • save(): Simpan imej sebagai fail dalam format yang ditentukan.

  • resize(): Ubah suai saiz imej.

  • crop(): Pangkas kawasan imej yang ditentukan.

  • putar(): Putar imej mengikut sudut tertentu.

  • tunjukkan(): Paparkan imej.

Selain itu, terdapat banyak fungsi lain yang biasa digunakan, seperti melaraskan kecerahan dan kontras, menggunakan penapis dan banyak lagi. Fungsi ini boleh membantu kami melaksanakan pelbagai tugas pemprosesan imej yang kompleks, dan biasanya terdapat beberapa parameter yang boleh digunakan untuk melaraskan lagi tingkah laku fungsi Anda boleh merujuk kepada dokumentasi yang berkaitan untuk kegunaan tertentu.

2. Tukar berbilang imej kepada video mp4

Gunakan PIL (Python Imaging Library) atau OpenCV dalam Python untuk membaca setiap imej.

Gunakan imejio perpustakaan pihak ketiga untuk menggabungkan berbilang gambar ke dalam satu fail video.

Konfigurasikan parameter seperti bilangan bingkai video, saiz video dan kelajuan main balik video bagi fail video yang dijana.

Berikut ialah contoh kod mudah:

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)
Salin selepas log masuk

Laksanakan prinsip, baca semua fail imej yang perlu digabungkan dan simpannya ke dalam senarai. Kemudian gunakan fungsi get_writer() pustaka imageio untuk mencipta objek penulis video dan tetapkan kelajuan main balik (fps) video. Kemudian semasa gelung, setiap imej dalam senarai dibaca dan ditambah pada bingkai video selepas menukarnya kepada format dengan mod warna RGB. Output akhir ialah fail video yang menggabungkan semua imej sasaran.

3. Optimumkan dan perbaiki

Sejajarkan program untuk mempercepatkan pemprosesan berbilang gambar. Nota: Kaedah berikut mungkin bukan kaedah yang optimum

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)
Salin selepas log masuk

Objek ThreadPoolExecutor dalam pustaka concurrent.futures digunakan di sini untuk pemprosesan selari. Pertama, dalam urutan utama, cari dan baca semua imej PNG yang perlu digabungkan dalam direktori kerja semasa, dan buat senarai tugas. Kemudian serahkan tugas ke kumpulan benang dan pastikan fail sasaran boleh diproses dengan cepat dan tidak segerak. Selepas semua imej PNG diproses, ia disimpan ke dalam senarai dalam imej dan akhirnya ditukar kepada video.

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan berbilang gambar ke dalam video mp4 berdasarkan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan