OpenCVで編集した動画が保存できなくて、もう遠回りした
タグがカオスになってますね...笑
さて、環境ですが
MAC OS X 10.14.4
python 3.7.3
Opencv 3.4.2
PIL 5.4.1
やりたかったこと
プレゼンでキャニーエッジ処理をした動画を見せたくて保存したかったんですよ。
OpenCVを使うとキャニーエッジの処理がめっちゃ簡単にできるじゃないですか
動画が258バイトってありえないよねー。そもそも再生できないし。
色々調べたがもう保存できれば良いかと開き直った
ffmpegで連番画像を作成
↓
PILで画像を読み込み
↓
OpenCVでCannyEdge処理
↓
PILで画像を保存
↓
ffmpegで連番画像を動画に戻す
具体的な手順
input.mp4から連番画像を作成します。
ffmpeg -i input.mp4 -vcodec png image_%03d.png
連番画像
image_001.png
image_002.png
...
image_125.png
こんな感じでできます。
この連番画像をOpenCVで編集するわけですが、保存パートができなかったわけで
PILを利用して画像を保存します。
コードは以下
import numpy as np
from PIL import Image
import cv2
#img file
pic_start = 1
pic_finish = 125
for i in np.arange(pic_start,pic_finish+1):
#扱っている画像を表示
print("\r{:}".format(i),end = "")
#open image
im = Image.open("image_{:0=3}.png".format(i))
#OpenCVに渡すためにnumpyに変換
open_im = np.asarray(im)
#CannyEdge処理
edges = cv2.Canny(open_im, 100, 150)
#save image
pil_im = Image.fromarray(edges)
pil_im.save("image2_{:0=3}.png".format(i))
そして最後に新たな連番画像をffmpegにより動画に戻す。
ffmpeg -r 30 -i image2_%03d.png -vcodec libx264 -pix_fmt yuv420p -r 30 out.mp4
これによりキャニーエッジ処理したout.mp4が保存できます。
OpenCV便利なんだけどたまにな...
Author And Source
この問題について(OpenCVで編集した動画が保存できなくて、もう遠回りした), 我々は、より多くの情報をここで見つけました https://qiita.com/daikiclimate/items/04752fb0ccda4e46976e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .