簡體   English   中英

使用 OpenCV (Python) 將 2 個圖像寫入一個持續時間為 10 秒的視頻

[英]Write 2 images into a video using OpenCV (Python) of 10 seconds duration

我正在嘗試在本地文件夾中拍攝 2 張​​圖像,並使用 OpenCV 的 Videowriter 功能從這些圖像創建視頻。 我使用的 FrameRate 為 1。所以這會創建一個持續時間為 2 秒的視頻。 下面是代碼(我從這里得到的):

import cv2
import os

image_folder = 'images'
video_name = 'video.avi'

images = [img for img in os.listdir(image_folder) if img.endswith(".png")]
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape

video = cv2.VideoWriter(video_name, 0, 1, (width,height))

for image in images:
    video.write(cv2.imread(os.path.join(image_folder, image)))

cv2.destroyAllWindows()
video.release()

目標:我想創建一個 10 秒的視頻,其中這 2 個圖像各顯示 5 秒。

我想論壇里可能有類似的問題,但我找不到。 如果有人能指出我的解決方案,那就太好了。

謝謝你。

下面的代碼片段應該可以解決您的問題。 請注意,您必須指定each_image_duration 我使用此變量在特定持續時間內寫入視頻中的每個圖像。 對於此用例,您必須將fps保持為1.0 ,因此每個視頻幀將顯示1.0 sec 這是cv2.Videowriter的第三個參數。

import cv2
import os

image_folder = 'images'
video_name = 'video.avi'
each_image_duration = 5 # in secs
fourcc = cv2.VideoWriter_fourcc(*'XVID') # define the video codec

images = [img for img in os.listdir(image_folder) if img.endswith(".png")]
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape

video = cv2.VideoWriter(video_name, fourcc, 1.0, (width, height))

for image in images:
    for _ in range(each_image_duration):
        video.write(cv2.imread(os.path.join(image_folder, image)))

cv2.destroyAllWindows()
video.release()

在這里,您可以根據您擁有的幀數和要制作的視頻的秒數動態計算 fps。

見下面的代碼:

import cv2
import os

image_folder = 'images'
video_name = 'video.avi'

fourcc = cv2.VideoWriter_fourcc(*'XVID') # define the video codec

images = [img for img in os.listdir(image_folder) if img.endswith(".png")]
img_count = len(images)
video_secs = 10
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape

video = cv2.VideoWriter(video_name, fourcc, float(img_count/video_secs), (width, height))

for image in images:
    video.write(image)

cv2.destroyAllWindows()
video.release()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM