2012-07-28 87 views
41

我使用Python綁定到OpenCV 2.4,安裝了以下instructionsOpenCV 2.4 VideoCapture無法在Windows上工作

我的問題類似於this one,但我需要Windows機器解決方案。

問題:當我嘗試使用

cap = cv2.VideoCapture(0) 
print cap.grab() 

它工作正常,但下面的代碼

cap = cv2.VideoCapture(filename) 
print cap.grab() 

總是返回False。

該文件的路徑是正確的,絕對的並且沒有空格。

我試着在Windows XP和Windows 7的兩臺機器上得到類似的結果。在Linux(Ubuntu)上,它對我來說工作正常。

+0

你可以發佈文件名的值嗎?嘗試使用'filename = os.path.join(filename)'。更多信息在這裏:http://stackoverflow.com/questions/1633643/unix-paths-officially-work-in-python-for-any-platform – 2012-07-28 08:03:22

+0

它是'「C:\\ m.avi」',但我只是試過'「C:\ m.avi」'和'「C:/m.avi」'。它仍然沒有工作(有和沒有'os.path.join')。 – Bihaqo 2012-07-28 08:29:14

+1

檢查opencv_ffmpeg.dll是否與python使用的其他OpenCV dll位於同一目錄中。 另外,請嘗試另一個avi文件。有時OpenCV無法解碼其他程序正確播放的文件(例如Windows Media Player) – Piotr 2012-07-28 12:52:06

回答

67

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的版本XYZ
opencv_ffmpeg.dll ==>opencv_ffmpegXYZ.dll

對於64位版本的OpenCV XYZ
opencv_ffmpeg.dll ==>opencv_ffmpegXYZ_64.dll

+4

謝謝!它的工作原理,但只有當你從'C:\ OpenCV \ 3rdparty \ ffmpeg \'複製_all_文件時,不僅僅是'opencv_ffmpeg.dll'。 – Bihaqo 2012-07-30 11:13:26

+2

請參閱下面的所有答案。看來需要將opencv_ffmpeg.dll文件重命名爲OpenCV版本X.YZ的opencv_ffmpegXYZ.dll,如果使用64位版本,則需要重命名爲opencv_ffmpegXYZ_64.dll。 – 2014-11-03 10:29:41

+2

使用OpenCV 2.4.10,將C:\ opencv \ sources \ 3rdparty \ ffmpeg添加到Windows路徑,並將opencv_ffmpeg.dll和opencv_ffmpeg_64.dll重命名爲opencv_ffmpeg2410.dll和opencv_ffmpeg2410_64.dll它的工作原理!謝謝:)我現在能夠打開MJPEG視頻文件 – Vincent 2015-02-18 07:59:51

27

複製opencv_ffmpeg.dll是不夠的我 - 我不得不將它重命名爲opencv_ffmpeg246.dll,當我用Python 2.7.5使用OpenCV 2.4.6時

+1

同樣的,我和我的名字叫* opencv_ffmpeg310.dll * – 2016-04-05 02:46:22

+0

相同到2.4.10! Thx – Flayn 2016-06-06 11:51:27

8

我第一次嘗試複製,然後更改窗口的路徑環境..它沒有工作,直到我改名爲opencv_ffmpeg245.dll爲我的openCV版本2.4.5和python 2.7。 (通知** 245.dll是OpenCV的版本2.4.5)

5

更新:這仍然是OpenCV的2.4.9真實,複製所有文件,並重新命名的DLL opencv_ffmpeg249.dll

+0

我不能讓它在OpenCV 3.0.0-tp2 Windows中工作,對絕望的編碼器有什麼提示? :) – andli 2014-06-19 19:40:08

7

對於64位版本,請將opencv_ffmpeg_64.dll重命名爲opencv_ffmpeg249_64.dll將249更改爲您的opencv版本。

6

對於64位環境下的OpenCV 3.0.0,請複製opencv_ffmpeg_64.dll並將其重命名爲opencv_ffmpeg300_64.dll。

還將此路徑添加到您的PATH環境變量,以使其在Java下使用OpenCV。

+0

也適用於pyhon – Gulzar 2016-05-26 12:38:43

3

起初我用windows8.1 32bit和opencv 2.4.10。
我使用Logicool C270製作的文件test1.wmv遇到同樣的問題。
我試圖使用其他文件test2.mov這是由數碼相機(佳能SX160)。 所以我可以玩test2.mov追加路徑C:\opencv\build\x86\vc12\bin
但我不能播放test1.wmv.
所以我嘗試通過使用VLC(至Video for youtube HD)將格式test1.wmv更改爲test1a.mp4。
然後我可以玩test1a.mp4.
我在Ubuntu 14.04 LTS上試過test1.wmv,那我就可以玩了。
它可能會在Windows8.1和Ubuntu 14.04 LTS之間的默認ffmpeg二進制文件上出現一些差異。

4

我有與python 2.7和opencv 2.4.10相同的問題。我將opencv_ffmpeg2410_64.dll文件從C:\ Applications \ opencv \ build \ x64 \ vc10 \ bin複製到python路徑中(我的位置是C:\ Users \ mohammad \ Anaconda),並解決了問題!

0

對於蟒蛇環境 副本opencv_ffmpeg249_64.dll從C:\ Python27 \ 根據您的OpenCV的正確版本 和過去它 ç重新命名它的版本:\用戶\ KHALID \ Anaconda2 \圖書館\ BIN