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

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

新規登録して質問してみよう
ただいま回答率
85.35%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2671閲覧

OpenCVを用いて動画から画像を切り出そうとしています

maaaro

総合スコア1

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2020/10/18 14:00

編集2020/10/26 17:36

前提・実現したいこと

pythonを用いて動画からフレームの画像を取得するプログラムを作成しようとしているのですが、途中で下記のエラーが出て止まってしまいます。
最初から止まるわけでは無く、11枚ほど画像の切り出しに成功し、保存したところでエラーが出ます。
以前は同じようなファイルの場所でエラー無く実行できていたのですが、久しぶりに同じプログラムを使おうとしたところエラーが出ました。原因として考えられるのは、pythonを再インストールしたことですが、具体的にどのような不具合が再インストールで生じうるのかが分かりませんでした。
ご助力いただければ幸いです。

発生している問題・エラーメッセージ

cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-9d_dfo3_\opencv\modules\imgcodecs\src\loadsave.cpp:738: error: (-215:Assertion failed) !_img.empty() in function 'cv::imwrite'

該当のソースコード

Python

1import cv2 2 3video_path = "D:/M1/200819_deer1/GH010060.MP4" 4cap = cv2.VideoCapture(video_path) 5 6count = cap.get(cv2.CAP_PROP_FRAME_COUNT) 7 8i = 1 9for num in range(1, int(count), 5): 10 cap.set(cv2.CAP_PROP_POS_FRAMES, num) 11 ret, frame_image = cap.read() 12 cv2.imwrite("200819_deer1/picture{:0=3}".format(i)+".jpg", frame_image) 13 print("save picture{:0=3}".format(i)+".jpg") 14 i += 1 15 16cap.release() 17

試したこと

for文中の、画像を何フレームごとに切り出すかという指定を5→10、5→20に変えてみたところ、エラーが出るのもそれぞれ6枚目、3枚目に変わったので、動画の時間が1秒を超えたところで何か問題が発生しているのかと思ったのですが(fps60です)、動画自体に問題はなく、また、他の動画でも同様のエラーが発生しました。
pythonを再インストールした直後だったので、PCを再起動してみたのですが解消されませんでした。

補足情報(FW/ツールのバージョンなど)

atomで実行しています。

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

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

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

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

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

meg_

2020/10/31 01:49

> ret, frame_image = cap.read() ここで画像の読み込みに失敗しているのではないでしょうか? if ret: を入れてみてその後の動作を確認してください。特定のフレームのみ何かしらの問題があるのかもしれません。 > 他の動画でも同様のエラーが発生しました。 同じ機材で撮ったものですか?  > 動画自体に問題はなく、 どうのようにして問題がないことを確認されましたか? 動画編集ソフト等でしょうか?
退会済みユーザー

退会済みユーザー

2020/11/01 08:41

動画のアップロードは可能ですか?
maaaro

2020/11/06 07:03

返信が遅くなってしまい申し訳ありません。 retの値を確認したところ、数枚falseのものが入っていました。 if ret:を入れて実行したところ保存に成功しました。ご指摘ありがとうございます。 >同じ機材で撮ったものですか? 違う機材で撮ったものでも同じようなエラーが起こっていました。また、違う機材で撮った二つの動画でもif ret:を入れて実行したところ動きました。 >どのようにして問題がないことを確認されましたか? windowsの動画編集ソフトで再生・トリミングができたため、動画ファイルが破損しているわけではなさそうだと考えました。
guest

回答1

0

ベストアンサー

https://note.nkmk.me/python-opencv-video-to-still-image/
上のサイトの「すべてのフレームを画像ファイルとして保存」のサンプルプログラムを試してみてはどうでしょう?

投稿2020/11/02 03:35

greenleave10000

総合スコア67

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

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

maaaro

2020/11/06 06:44

ありがとうございます。試してみます。
maaaro

2020/11/06 07:04

ありがとうございます。参考にしてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問