ビデオフレームを「イメージ」というフォルダに抽出しました。フォルダーに画像を保存した後、次のコードを使用してビデオを再度作成します。ビデオを取得しましたが、フレームはランダムに並べられていますが、フレームを順番に並べるにはどうすればよいですか?投稿してくれてありがとう
import cv2
import os
image_folder = 'images'
video_name = 'video.avi'
images = [img for img in os.listdir(image_folder) if img.endswith(".jpg")]
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()
これを修正するにはどうすればよいですか?ビデオを元のビデオと同じレートにし、フレームを順番に並べたい。
フレームを保存する必要がある場合は、これを試してください
import cv2
import os
image_folder = 'images'
video_name = 'video.avi'
images = [img for img in os.listdir(image_folder) if img.endswith(".jpg")]
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 i in range(len(images)):
video.write(cv2.imread(os.path.join(image_folder, 'a'+str(i)+'.jpg')))
cv2.destroyAllWindows()
video.release()
これでうまくいきます
import cv2
import os
image_folder = 'c:\\m\\'
video_name = 'c:\\m\\avideo.avi'
images = [img for img in os.listdir(image_folder) if img.endswith(".jpg")]
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape
#1 fps
#video = cv2.VideoWriter(video_name, 0, 1, (width,height))
#25 fps
video = cv2.VideoWriter(video_name, 0, 25, (width,height))
for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))
cv2.destroyAllWindows()
video.release()
材料と結果 ここ
ファイルをリストしてリストをソートするには、glob
を試してください。 globを使用してコードを編集しました。 (画像のファイル名が希望する順序になっていると仮定)
import cv2
import os
import glob
video_name = 'video.avi'
images = glob.glob('images/*.jpg')
images.sort()
frame = cv2.imread(images[0])
height, width, layers = frame.shape
video = cv2.VideoWriter(video_name, 0, 1, (width,height))
for image in images:
video.write(cv2.imread(image))
cv2.destroyAllWindows()
video.release()
自然な並べ替えが必要なようです natsort ライブラリを試してください:
from natsort import natsorted
images = natsorted(images)
Pipを使用してインストールします。
pip install natsort