質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

1回答

4952閲覧

動画から連番で画像を保存するプログラム

testjojo

総合スコア7

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2017/11/24 14:38

編集2017/11/24 14:40

###前提・実現したいこと
動画(wmvファイル)を読み込んで、静止画(jpgファイル)を連番で保存したいです。

###発生している問題・エラーメッセージ
画像が出力されない

###該当のソースコード

python

1import os 2import shutil 3import cv2 4 5def video_2_frames(video_file='./test.wmv', image_dir='./image_dir/', image_file='img_%s.jpg'): 6 # Delete the entire directory tree if it exists. 7 if os.path.exists(image_dir): 8 shutil.rmtree(image_dir) 9 10 # Make the directory if it doesn't exist. 11 if not os.path.exists(image_dir): 12 os.makedirs(image_dir) 13 14 # Video to frames 15 i = 0 16 cap = cv2.VideoCapture(video_file) 17 while(cap.isOpened()): 18 flag, frame = cap.read() # Capture frame-by-frame 19 if flag == False: # Is a frame left? 20 break 21 cv2.imwrite(image_dir+image_file % str(i).zfill(6), frame) # Save a frame 22 print('Save', image_dir+image_file % str(i).zfill(6)) 23 i += 1 24 25 cap.release() # When everything done, release the capture

###試したこと
実行すると
Process finished with exit code 0
となります

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2017/11/24 14:40

標準出力には適切な表示がありますか?
testjojo

2017/11/25 13:16

本来であればSave ./image_dir/img_000000.jpg Save ./image_dir/img_000001.jpg...のように出力されてからProcess finished with exit code 0が出力されるはずなのですが、Process finished with exit code 0しか出力されません。
guest

回答1

0

下記リンク先の動画(mp4)を保存して質問者様のコードを走らせると問題なく動作しました。
空撮動画

python

1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3import os 4import shutil 5import cv2 6 7 8def video_2_frames(video_file='./test.wmv', image_dir='./image_dir/', 9 image_file='img_%s.jpg'): 10 # Delete the entire directory tree if it exists. 11 if os.path.exists(image_dir): 12 shutil.rmtree(image_dir) 13 14 # Make the directory if it doesn't exist. 15 if not os.path.exists(image_dir): 16 os.makedirs(image_dir) 17 18 # Video to frames 19 i = 0 20 cap = cv2.VideoCapture(video_file) 21 while (cap.isOpened()): 22 flag, frame = cap.read() # Capture frame-by-frame 23 if flag == False: # Is a frame left? 24 break 25 cv2.imwrite(image_dir + image_file % str(i).zfill(6), 26 frame) # Save a frame 27 print('Save', image_dir + image_file % str(i).zfill(6)) 28 i += 1 29 30 cap.release() # When everything done, release the capture 31 32 33def main(): 34 video_2_frames(video_file="aerial.mp4") 35 36 37if __name__ == '__main__': 38 main() 39""" 40出力結果 41Save ./image_dir/img_000000.jpg 42Save ./image_dir/img_000001.jpg 43Save ./image_dir/img_000002.jpg 44Save ./image_dir/img_000003.jpg 45Save ./image_dir/img_000004.jpg 46Save ./image_dir/img_000005.jpg 47Save ./image_dir/img_000006.jpg 48... 49Save ./image_dir/img_000266.jpg 50Save ./image_dir/img_000267.jpg 51Save ./image_dir/img_000268.jpg 52Save ./image_dir/img_000269.jpg 53Save ./image_dir/img_000270.jpg 54Save ./image_dir/img_000271.jpg 55Save ./image_dir/img_000272.jpg 56 57Process finished with exit code 0 58"""

投稿2017/11/25 00:23

wakame

総合スコア1170

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

testjojo

2017/11/25 13:17

解答ありがとうございます。 同じ動画を保存して試しましたがやはりだめでした。ソースコードと同じディレクトリにおいているのですが、うまく行きません
wakame

2017/11/25 13:22

ちょっと気になったのですが質問者様の環境はタグ情報からpython2.7ということでよろしいでしょうか?でしたらimport cv2のみ書いたコードを走らせるとどうなるか教えてください。
testjojo

2017/11/25 14:28

python2.7です。 Process finished with exit code 0と出力されます
wakame

2017/11/25 14:40

ちょっと疑問なのですがpython2.7であるとすると質問者様のソースコードはpython2系対応しておらずエラーになるはずです、というのもprint()はpython3以降でしか使えないはずです。 (from __future__ import print_functionをしていれば別ですが・・・)
wakame

2017/11/25 14:43

上記踏まえて確認です、質問者様のソースコード時はどのようにコードを実行されてますか?>> python ***.pyのように実行されていると思うのでターミナル等に入力しているコマンドを教えてください。
LouiS0616

2017/11/25 14:49

> というのもprint()はpython3以降でしか使えないはず 横から失礼します、タプルを対象とするprint文と解釈されるので実行可能かと。
wakame

2017/11/25 14:59

御指摘ありがとうございます、なるほど確かにタプルと認識されて表示されるようですね。( 手元に環境がないのでpaiza.ioで確認してみました。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問