Python次の 命令 でインストールされたOpenCV 2.4へのバインディングを使用しています。
私の問題は this one に似ていますが、Windowsマシンソリューションが必要です。
問題:使用しようとすると
cap = cv2.VideoCapture(0)
print cap.grab()
それは正常に動作しますが、次のコード
cap = cv2.VideoCapture(filename)
print cap.grab()
常にFalseを返します。
ファイルへのパスは正しい、絶対パスであり、スペースはありません。
Windows XPとWindows 7で同様の結果が得られる2台のマシンで試しました。Linux(Ubuntu)ではうまく動作します。
C:\OpenCV\3rdparty\ffmpeg\
をWindows PATH環境変数に追加するか、opencv_ffmpeg.dll
をそのディレクトリからC:\Python27\
またはPATHにあるディレクトリにコピーします。または、 http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv からOpenCVバイナリを使用します。
opencv_ffmpeg.dll
ファイルの名前変更も必要になる場合があります。
OpenCVバージョンX.Y.Zの場合opencv_ffmpeg.dll
==> opencv_ffmpegXYZ.dll
64ビットOpenCVバージョンX.Y.Zの場合opencv_ffmpeg.dll
==> opencv_ffmpegXYZ_64.dll
opencv_ffmpeg.dllをコピーするだけでは十分ではありません-名前をopencv_ffmpeg246.dll、OpenCV 2.4.6をPython 2.7.5
私は最初にコピーを試み、次にウィンドウのパス環境を変更しました。openCVバージョン2.4.5およびpython 2.7。の名前をopencv_ffmpeg245.dllに変更するまで機能しませんでした** 245.dllはopencvバージョン2.4.5のものです)
64ビットバージョンの場合、opencv_ffmpeg_64.dllの名前をopencv_ffmpeg249_64.dllに変更します。249をopencvバージョンに変更します。
64ビット環境のOpenCV 3.0.0の場合、opencv_ffmpeg_64.dllをコピーして、名前をopencv_ffmpeg300_64.dllに変更します。
また、このパスをPATH環境変数に追加して、JavaでOpenCVで動作するようにします。
更新:これはOpenCV 2.4.9にも当てはまり、すべてのファイルをコピーして、dllの名前をopencv_ffmpeg249.dllに変更します
python 2.7とopencv 2.4.10でも同じ問題が発生しました。 opencv_ffmpeg2410_64.dllファイルをC:\ Applications\opencv\build\x64\vc10\binからpythonパスにコピーしました(私の場合はC:\ Users\mohammad\Anacondaにあります)。
最初は、windows8.1 32bitとopencv 2.4.10を使用します。
Logicool C270で作成されたファイルtest1.wmv
を使用するのと同じ問題に直面しました。
他のファイルtest2.mov
を使用しようとしましたが、これはDigital Camera(Canon SX160)によって作成されました。したがって、test2.mov
を再生してパスC:\opencv\build\x86\vc12\bin
を追加できます。
しかし、test1.wmv.
を再生できません
だから、VLC(to Video for youtube HD
)を使用して、test1.wmvの形式をtest1a.mp4に変更しようとしています。
その後、test1a.mp4.
をプレイできます
Ubuntu 14.04 LTSでtest1.wmv
を試した後、簡単にプレイできます。
windows8.1とUbuntu 14.04 LTSの間で、デフォルトのffmpegバイナリに何らかの違いが生じる可能性があります。
Anaconda環境の場合、C:\ Python27 \からopencv_ffmpeg249_64.dllをコピーし、opencvの正しいバージョンに応じてバージョンを変更し、C:\ Users\KHALID\Anaconda2\Library\bin