OpenCV 2.4 VideoCapture not working on Windows
Question:
I’m using Python bindings to OpenCV 2.4 installed with following instructions.
My problem is similar to this one, but I need Windows machine solution.
Problem: when I try to use
cap = cv2.VideoCapture(0)
print cap.grab()
it works fine, but the following code
cap = cv2.VideoCapture(filename)
print cap.grab()
always return False.
Path to the file is correct, absolute and has no spaces.
I tried on two machines with Windows XP and Windows 7 with similar results. On Linux (Ubuntu) it works fine for me.
Answers:
Add C:OpenCV3rdpartyffmpeg
to the Windows PATH environment variable or copy opencv_ffmpeg.dll
from that directory to C:Python27
or to a directory that is in the PATH. Alternatively, use the OpenCV binaries from http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv.
Renaming the opencv_ffmpeg.dll
file may also be necessary.
For OpenCV version X.Y.Z
opencv_ffmpeg.dll
==> opencv_ffmpegXYZ.dll
For 64-bit OpenCV version X.Y.Z
opencv_ffmpeg.dll
==> opencv_ffmpegXYZ_64.dll
Copying opencv_ffmpeg.dll wasn’t enough for me – I had to rename it to opencv_ffmpeg246.dll, when I used OpenCV 2.4.6 with Python 2.7.5
I first tried copying, then changing the Path environment of windows.. it didn’t work until i changed the name to opencv_ffmpeg245.dll for my openCV version 2.4.5 and python 2.7. (notice **245.dll is from opencv version 2.4.5)
Update: This is still true for OpenCV 2.4.9, copy all the files, and rename the dll opencv_ffmpeg249.dll
For 64 bit versions, rename opencv_ffmpeg_64.dll to opencv_ffmpeg249_64.dll Change 249 to your opencv version.
For OpenCV 3.0.0 on 64 bit environment copy opencv_ffmpeg_64.dll and rename it to opencv_ffmpeg300_64.dll.
Also add this path to your PATH environment variable to get it work with OpenCV under Java.
At first I use windows8.1 32bit and opencv 2.4.10.
I faced same problem to use file test1.wmv
which was made by Logicool C270.
I tried to use other file test2.mov
which was made by Digital Camera ( Canon SX160 ).
So I can play test2.mov
to append path C:opencvbuildx86vc12bin
.
But I cannot Play test1.wmv.
So I try to change format test1.wmv to test1a.mp4 by using VLC ( to Video for youtube HD
) .
Then I can play test1a.mp4.
I tried test1.wmv
on Ubuntu 14.04 LTS , then I can play it easy.
It may occur some difference on default ffmpeg binary between windows8.1 and Ubuntu 14.04 LTS.
I had the same issue with python 2.7 and opencv 2.4.10. I copied the opencv_ffmpeg2410_64.dll file from C:Applicationsopencvbuildx64vc10bin into the python path (mine is at C:UsersmohammadAnaconda) and it was solved!
For anaconda environment
copy opencv_ffmpeg249_64.dll from C:Python27
rename its version according to your opencv correct version
and past it to
C:UsersKHALIDAnaconda2Librarybin
I’m using Python bindings to OpenCV 2.4 installed with following instructions.
My problem is similar to this one, but I need Windows machine solution.
Problem: when I try to use
cap = cv2.VideoCapture(0)
print cap.grab()
it works fine, but the following code
cap = cv2.VideoCapture(filename)
print cap.grab()
always return False.
Path to the file is correct, absolute and has no spaces.
I tried on two machines with Windows XP and Windows 7 with similar results. On Linux (Ubuntu) it works fine for me.
Add C:OpenCV3rdpartyffmpeg
to the Windows PATH environment variable or copy opencv_ffmpeg.dll
from that directory to C:Python27
or to a directory that is in the PATH. Alternatively, use the OpenCV binaries from http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv.
Renaming the opencv_ffmpeg.dll
file may also be necessary.
For OpenCV version X.Y.Z
opencv_ffmpeg.dll
==> opencv_ffmpegXYZ.dll
For 64-bit OpenCV version X.Y.Z
opencv_ffmpeg.dll
==> opencv_ffmpegXYZ_64.dll
Copying opencv_ffmpeg.dll wasn’t enough for me – I had to rename it to opencv_ffmpeg246.dll, when I used OpenCV 2.4.6 with Python 2.7.5
I first tried copying, then changing the Path environment of windows.. it didn’t work until i changed the name to opencv_ffmpeg245.dll for my openCV version 2.4.5 and python 2.7. (notice **245.dll is from opencv version 2.4.5)
Update: This is still true for OpenCV 2.4.9, copy all the files, and rename the dll opencv_ffmpeg249.dll
For 64 bit versions, rename opencv_ffmpeg_64.dll to opencv_ffmpeg249_64.dll Change 249 to your opencv version.
For OpenCV 3.0.0 on 64 bit environment copy opencv_ffmpeg_64.dll and rename it to opencv_ffmpeg300_64.dll.
Also add this path to your PATH environment variable to get it work with OpenCV under Java.
At first I use windows8.1 32bit and opencv 2.4.10.
I faced same problem to use file test1.wmv
which was made by Logicool C270.
I tried to use other file test2.mov
which was made by Digital Camera ( Canon SX160 ).
So I can play test2.mov
to append path C:opencvbuildx86vc12bin
.
But I cannot Play test1.wmv.
So I try to change format test1.wmv to test1a.mp4 by using VLC ( to Video for youtube HD
) .
Then I can play test1a.mp4.
I tried test1.wmv
on Ubuntu 14.04 LTS , then I can play it easy.
It may occur some difference on default ffmpeg binary between windows8.1 and Ubuntu 14.04 LTS.
I had the same issue with python 2.7 and opencv 2.4.10. I copied the opencv_ffmpeg2410_64.dll file from C:Applicationsopencvbuildx64vc10bin into the python path (mine is at C:UsersmohammadAnaconda) and it was solved!
For anaconda environment
copy opencv_ffmpeg249_64.dll from C:Python27
rename its version according to your opencv correct version
and past it to
C:UsersKHALIDAnaconda2Librarybin