我正在使用ubuntu 14.04,并安装了anaconda python。我使用conda install opencv和conda install cv2来安装opencv。但是我根本无法使用VideoCapture(我需要逐帧处理视频)。我需要在项目的其余部分使用anaconda。
这是我的代码:
import cv2
import os
capture = cv2.VideoCapture('/home/Downloads/data/zfH2XdRcH14.mp4')
while not capture.isOpened():
print 'noob'
while True:
ret, frame = capture.read()
cv2.imwrite('~/Downloads/data/pic.png',frame)
cv2.imshow('Video', frame)
count += 1
print count
代码保持打印菜鸟。我已多次检查位置,这是正确的。我不知道问题是什么,我被困在这几个小时。
答案 0 :(得分:4)
解决方案是使用opencv编译ffmpeg。对于opencv3,请参阅 https://github.com/menpo/conda-opencv3
对于opencv2,请参阅 http://dhaneshr.net/2016/06/03/installing-opencv-2-4-x-with-ffmpeg-python-on-anaconda/
答案 1 :(得分:4)
ffmpeg在默认的conda频道中不存在。
您需要从conda-forge频道下载opencv,其中包含用于视频处理的最新和附加软件包和依赖项。请尝试以下方法:
conda install -c conda-forge ffmpeg
conda install -c conda-forge opencv
这里-c告诉频道使用'conda-forge'。
答案 2 :(得分:3)
我遇到了同样的问题。 VideoCapture不能与Conda的默认版OpenCV一起使用,因为未启用ffmpeg。要使VideoCapture工作,您必须在Cmake GUI中启用ffmpeg并进行编译。您还可以安装我的启用了ffmpeg的OpenCV版本:
conda install -c https://conda.binstar.org/jaimeivancervantes opencv
答案 3 :(得分:0)
我相信我遇到了同样的问题。我通过将lib
文件夹添加到PATH
来修复它。例如,
export PATH="/home/iori/anaconda3/bin:$PATH"
export PATH="/home/iori/anaconda3/lib:$PATH"
我的.bachrc
现在有第二行。第一行由anaconda添加,source activate
命令切换此bin
文件夹,但我认为它不会处理我发现烦人的lib
文件夹,因为这意味着opencv找不到{{那里有1}个文件,当然cv2.VideoCapture也失败了。
以上示例将解决默认conda env的问题。对于其他环境,我仍然需要手动将lib_opencv_*.so
文件夹添加到lib
。所以,我想知道如何自定义PATH
命令为我自动执行此操作...
答案 4 :(得分:0)
我遇到了同样的问题,在互联网上看到我找到了一个有效的解决方案。在具有管理员访问权限的命令行中:
conda install conda-build
conda install cmake
conda config --add channels menpo
编辑以下文件:
C:\ Program Files \ Anaconda2 \ pkgs \ cmake-3.6.3-vc9_0 \ info \ recipe \ buil.sh
添加以下标志:
-DWITH_FFMPEG = 1
例如,就我而言:
#!/bin/bash
LDFLAGS=$LDFLAGS" -Wl,-rpath,$PREFIX/lib" \
./bootstrap \
--verbose \
--prefix="${PREFIX}" \
--system-libs \
--no-qt-gui \
--no-system-libarchive \
--no-system-jsoncpp \
-- \
-DWITH_FFMPEG = 1 \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_FIND_ROOT_PATH="${PREFIX}"
make
make install
最后:
conda build /conda
对我有用。
另一方面,我之前将 opencv_ffmpegxyz.dll 文件从 \ opencv \ build \ bin 复制到 \ Program Files \ Anaconda2 ;在我的情况下opencv_ffmpe320_64.dll(64位版本),我添加了一个新的 名为ffmpeg的环境变量,其中包含放置opencv_ffmpeg.dll文件的路径。
问候。
答案 5 :(得分:0)
使用conda-recipes安装ffmpeg。
git clone https://github.com/conda/conda-recipes.git
cd conda-recipes
conda build x264
conda build ffmpeg
另见here。
答案 6 :(得分:0)
我找到了另一种方法来使视频编写器工作。我实际上在计算机上安装了ImageMagik,然后将动画路径设置为安装ImageMagik的位置。我想知道是否可以对ffmpeg做同样的事情?
plt.rcParams["animation.convert_path"] = "C:\ProgramFiles\ImageMagick\magick.exe"
#Here I am loading a matplotlib.plot as the animation, so it could be different than for you, but the point is that by specifying the path to imagemagik I was able to write a video to a file.
anim = animation.FuncAnimation(fig, animate, frames=len(mylist), init_func=init, interval=300, blit=True)
anim.save('output.gif', dpi=80, writer='imagemagik')