連番の画像を縦に並べて、動画にしたいですが、出力後の動画ファイルを開いても、エラーが起こります。
コード
import cv2 import pprint from tqdm import tqdm import matplotlib.pyplot as plt #縦に画像を連結 for i in tqdm(range(0, 500, 5)): img1 = cv2.imread("1/%d.jpg"%(i)) img1 = cv2.resize(img1, (100, 100)) img2 = cv2.imread("2/%d.jpg"%(i)) img2 = cv2.resize(img2, (100, 100)) im_v = cv2.vconcat([img1, img2]) cv2.imwrite('1and2/%d.jpg'%(i), im_v) #動画作成 fourcc = cv2.VideoWriter_fourcc('X','V','I','D') video = cv2.VideoWriter('test.avi', fourcc, 20.0, (100, 200)) for i in tqdm(range(0, 500, 5)): img = cv2.imread("1and2/%d.jpg"%(i)) img = cv2.resize(img, (100, 200)) video.write(img) video.release()
出力した動画を開こうとすると以下のメッセージが出てきて、動画を開くことができません。
この場合何が原因で、動画を作成できていないのでしょうか。
詳しい方がいらっしゃいましたら、教えてください。
よろしくお願いいたします。
動画を再生するためのコーデックはインストールされてますか?この場合はxvidでしょうか。
他のフォーマットでもダメですか?
ご回答いただき、ありがとうございます。
他の動画であれば再生することができるので、コーデックはインストールできていると思っていました。
プログラム中のimg1, img2だけを個別に動画にして、それを再生することはできるのですが、
連結した画像を動画にすると再生ができないという状況です。
他のフォーマットは.mp4も試しましたが、再生できません。。。
手元の環境で同様の処理をやってみましたが問題は起こらないですね・・・
1/, 2/, 1and2/の画像に変なのが混ざっていないか見てみてはどうでしょう。
そうでしたか。。ご確認いただきありがとうございます。
このプログラムに問題があるわけではないんですね。
確認してみます。ご丁寧にありがとうございました。
あなたの回答
tips
プレビュー