opencvのインストールで問題が発生しましたが、mp4ビデオを開くことができません。私のシステムは、ubuntu 16.04、64bit、opencv3.2がpython 3.5から使用されています。opencv3.2(ubuntu、python3)でmp4を読むことができません
VideoCapture.read
は、False
とNone
を返します。
この問題には他にも疑問がありますが、異なるプラットフォームまたは異なるopencvバージョンを対象としています。
明らかに、適切なコーデックがありません。 私は自分のビルドディレクトリからmake uninstall
を実行し、opencv*
をaptでパージし、ソースから再度ビルドしました。今回は、コンパイル前にffmpeg
がインストールされていることを確認してください。ここで
は私の手順は次のとおりです。
- クローンのOpenCVとopencv_contrib
cd opencv/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_EXAMPLES=ON ..
make -j 8
sudo make install
私はffmpegのがあり、cmakeのの出力を確認:
Video I/O:
-- DC1394 1.x: NO
-- DC1394 2.x: NO
-- FFMPEG: YES
-- avcodec: YES (ver 56.60.100)
-- avformat: YES (ver 56.40.101)
-- avutil: YES (ver 54.31.100)
-- swscale: YES (ver 3.1.101)
-- avresample: NO
-- GStreamer: NO
-- OpenNI: NO
-- OpenNI PrimeSensor Modules: NO
-- OpenNI2: NO
-- PvAPI: NO
-- GigEVisionSDK: NO
-- Aravis SDK: NO
-- UniCap: NO
-- UniCap ucil: NO
-- V4L/V4L2: NO/YES
-- XIMEA: NO
-- Xine: NO
-- gPhoto2: NO
しかし、問題が解決しません。これをどうすれば解決できますか?
UPDATE私は手動では/ usr/localからいくつかの.soファイルを削除する必要がありました。
次に、私が見つけたすべてのavi関連コーデックをインストールしました。 https://wiki.ubuntuusers.de/Codecs/ さらにlibavcodec-extraとffmpeg
次に、私は再コンパイルして今すぐ動作します。
私はopencv(sudo make uninstall)を削除し、libavcodec-extraをインストールしてから、再度コンパイルしました。問題は変わらない – lhk
ここには多くの可動部品があります! Hm。あなたはこれが実際にffmpegであることを確認できますか?pythonではテストビデオを作成して間違ったopencvを選択していませんか? [この回答](http://stackoverflow.com/questions/11640458/how-can-i-generate-a-video-file-directly-from-an-ffmpeg-filter-with-no-actual-in)内部のテストデータジェネレータからビデオファイルを生成する方法を示しています。コマンドラインで 'which ffmpeg'を実行して、あなたが望むバージョンのffmpegを使用していることを確認してください。 –
可動部分については間違いありません。今回はアンインストールを実行しただけでなく、.soファイルとPythonパッケージを手動で検索しました。構成や古いインポートパスが残っていないことを確認します。それから、cmakeがメディアI/Oにリストされているすべてのプラグインのバージョンをピックアップするまで、見つけたすべてのavi関連プラグインをインストールしました。 libavcodec-extraや多くのgstreamerプラグインなどを含むようになりました。正しいコーデックをインストールするためのあなたの答えは間違いなく正しい方向です。私は100%がlibavcodec-extraだと言うことはできませんが、あなたはまだ私の問題を解決しました。ありがとう – lhk