VideoCapture在Anaconda中不起作用

时间:2015-03-25 07:16:24

标签: python opencv anaconda

我正在使用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

代码保持打印菜鸟。我已多次检查位置,这是正确的。我不知道问题是什么,我被困在这几个小时。

7 个答案:

答案 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')