在 ubuntu 上使用 anaconda 安装 openCV
Posted
技术标签:
【中文标题】在 ubuntu 上使用 anaconda 安装 openCV【英文标题】:Installing openCV with anaconda on ubuntu 【发布时间】:2013-11-19 15:29:29 【问题描述】:我正在尝试将 openCV 库与 anaconda (Python) 一起使用,我能够导入 cv2 包,但到目前为止还没有任何东西能够访问 .mp4 文件。这是我不知道的 ffmpeg 的问题。因为我正在使用我的手机,所以我现在无法发布代码。但是,如果有人能给我一个 Linux 脚本或教程,可以帮助我在 python 上使用 openCV 来分析具有 h264 编码的 mp4 视频,那就太好了
【问题讨论】:
【参考方案1】:我相信我正在寻找解决方案的路上,所以我发布这个来帮助其他人。
下载conda-recipes。坐在那个目录中,运行conda build x264
,然后运行conda build ffmpeg
。
因为我的系统是 32 位的,所以我必须在 conda-recipes/x264/build.sh
和 conda-recipes/ffmpeg/build.sh
中各更改一行,然后才能成功运行 conda build
。我变了
export CFLAGS="-Wall -g -m64 -pipe -O2 -march=x86-64 -fPIC"
到
export CFLAGS="-Wall -g -m32 -pipe -O2 -march=x86-64 -fPIC"
我不太明白我在做什么,但我猜这会有所帮助,现在两个构建都运行没有错误。
但是,opencv 似乎没有使用 FFmpeg;我仍然无法像在 conda 之外那样打开视频文件。如果我得到这个工作,我会更新。
【讨论】:
你有过进一步的合作吗?我可以使用 conda-recipes 构建 ffmpeg,但我不认为 anaconda 的 cv2 正在使用构建的 ffmpeg。请告诉我,感谢您的帮助。 不,这是我在放弃之前所获得的。我对 OpenCV 作为一种将视频数据读入 Python 的方法很感兴趣,为此我制作了 a video reader,它只是从 Python 调用 FFmpeg 并将输出通过管道传输到文件。在我解决这个 OpenCV 问题之前,这是一个临时解决方案。我仍然对你取得的任何进展非常感兴趣。【参考方案2】:conda 中默认的 OpenCV 包没有启用 ffmpeg。为了解决这个问题,我为 Linux-64 编译了 OpenCV,并在 CMake 中激活了 ffmpeg。我将包上传到我的binstar频道,你可以使用以下命令安装它:
conda install -c https://conda.binstar.org/jaimeivancervantes opencv
【讨论】:
在 Ubuntu 16.04 上尝试过这种方法,但在执行“import cv2”时出错:ImportError: libtiff.so.3: cannot open shared object file: No such file or directory :(【参考方案3】:我想我刚刚使用menpo-opencv3
https://github.com/menpo/conda-opencv3 在 LinuxMint17(基本上是 Ubuntu 14)上为 python 3.5 构建了 opencv3.1.0。这个menpo
包也带有opencv-contrib
模块。太棒了……
首先,确保source deactivate
因为构建 conda 包需要在主 conda env 中完成。
conda install conda-build
git clone https://github.com/menpo/conda-opencv3
cd conda-opencv3
conda config --add channels menpo
conda build conda/
conda install /PATH/TO/OPENCV3/PACKAGE.tar.gz
正如说明所说,在默认设置中,FFMPEG 是禁用的。因此,我必须编辑位于conda-opencv3/conda
中的build.sh
文件以使-DWITH_FFMPEG=0
变为-DWITH_FFMPEG=1
,然后再执行conda build conda/
。
如果conda build conda/
成功,最后你会看到这样的东西。
如果您想稍后将此包上传到 anaconda.org,请输入:
$ anaconda 上传 /home/用户名/anaconda3/conda-bld/linux-64/opencv3-3.1.0-py35_0.tar.bz2
这是我们刚刚构建的 conda 包的路径(我认为)。
所以,现在我们可以激活我们要安装这个包的 conda env(例如 cv2-env)
source activate cv2-env
然后
conda install /home/username/anaconda3/conda-bld/linux-64/opencv3-3.1.0-py35_0.tar.bz2
安装此软件包后,我可以使用cv2.VideoCapture
加载我在 Windows 7 中录制的一些 avi 文件。
(menpo 甚至还有 opencv v2.4 https://github.com/menpo/conda-opencv,但我没有尝试过。请注意,2 和 3 不能共存。)
【讨论】:
得到一个错误:致命错误 hdf5.h:No such file or directory (ubuntu 16.04 64bit)【参考方案4】:+ curl -L https://raw.githubusercontent.com/Itseez/opencv_3rdparty/81a676001ca8075ada498583e4166079e5744668/ippicv/ippicv_linux_20151201.tgz -o /home/vasu/anaconda2/conda-bld/work/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
Command failed: /bin/bash -x -e /home/vasu/anaconda2/conda-bld/work/opencv-3.1.0/conda_build.sh
【讨论】:
以上是关于在 ubuntu 上使用 anaconda 安装 openCV的主要内容,如果未能解决你的问题,请参考以下文章
如何在Ubuntu 16.04上安装Anaconda Python Distribution