2017-01-13 8 views
1

OpenCVの新機能です。多くの記事を読んだ後、次のコードを使用してビデオ内のフレーム数を取得する方法を知りました。私のビデオはすべて約30秒です。しかし、OpenCVのフレームカウントメソッドは常に0を返します。理由はわかりません。私のビデオタイプは.mp4です。誰かがこれで私を助けることができますか?OpenCVのフレームカウントは常に0を出力します

さまざまな長さの動画に同じコードを使用してみました。これらのすべての場合、フレームカウントとして0が出力されました。

マイOpenCVのバージョンはここ2.4.11

あるコードスニペットです。

import cv2 
cap = cv2.VideoCapture("video.mp4") 
length = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)) 
print(length) 

ありがとうございます!

+0

ファイルが存在しますか?完全なパスを試すか、チェックするために 'isOpened'関数を試すことができます。 – ilke444

+0

これは役に立ちます... http://answers.opencv.org/question/55121/counting-the-total-number-of-frames-in-a-video-file/ –

+0

@ ilke444:はい、私はフルパス。私はビデオをAVI形式に変換しましたが、それでも動作しません! – Gingerbread

答えて

1

バージョン2.4.11(総フレーム数を扱う場合)で同じジレンマに遭遇し、コミットID 0e436c3fe9e9c30c23a54449be44b2618aec1cb1(2016年6月24日時点)にアップグレードしました。また、opencv2-2.4のアップデート版を試すこともできます。 13日前にリリースされて以来、修正されているはずですが、試していません。すべてのリリースhereを確認してください。

注: - OpenCV3には、古いコードブレークを引き起こす可能性のあるいくつかのデザイン変更があります。いくつかの例: - HighguiはVideoIOとImgCodecsに分割されました。また、Core.rectangleのような関数がImgProcに移動しました。しかし、これらの変更は、私の意見では、OpenCVをより直観的で使いやすくしています。 OpenCVので使用されて

  1. 基礎となるビデオデコーダライブラリ:

    **一般的には、**

    この問題は、多くの場合、3つの原因があります。 OpenCVをコンパイルしている間にあなたがそれをオーバーライドしていない限り、ほとんどの場合、FFmpegです。

  2. ファイルが破損している可能性があります。そのため、他のファイル(他のカメラから取得したファイル)で試してみてください。

  3. 最後に、3番目の問題はOpenCVのバグである可能性があります。

+0

FYI:リリース間で特定のコミットIDを使用するのは通常危険ですが、リリースはとても良いアルファ/バージョン3.2または2.4.13を試してください – saurabheights

+0

これを指摘してくれてありがとうございます。私は3.2にアップグレードしました。さらに、FFMCEGコーデックを使用してビデオを処理するために、アナコンダの環境変数を設定しました。 – Gingerbread

関連する問題