首页 > 代码库 > 安装torch-opencv

安装torch-opencv

安装torch-opencv

torch
torch-opencv
opencv-3.1.0
opencv-contrib

想在torch中使用光流法,于是就希望能够调用opencv中的光流代码,而torch中对opencv-3.1.0进行了封装,即torch-opencv包,如果仅仅安装opencv3.1,然后安装torch-opencv,当然也能安装成功,但是这时候调用光流法‘Optflow=cv.optflow‘总是失败,找不到这个包。这时候只能使用‘require‘cv.cudaoptflow‘ ,这个包里虽然光流方法比较全,但是似乎每帧图像都要单独转换为cuda类型,这个转换过程我跑起来感觉太慢了。
如果我们不适用cuda的话,那么就需要安装opencv-contrib。

下面记录下安装过程中碰到的问题和解决办法
注: 服务器系统 : Ubuntu 14.04/ 16.04 LTS, 非root用户

安装opencv3.1(包含 opencv-contrib)

  1. 依赖包
    这些依赖包我用的服务器上都已经装过了,因为服务器上之前安装了torch,Anaconda,matlab,cuda8.0,cudnn v6.0等软件,常用的依赖项都齐全。如果安装过程中提示缺少某些依赖项,先下载安装。

GCC 4.4.x or later
CMake 2.8.7 or higher
Git
GTK+2.x or higher, including headers (libgtk2.0-dev)
pkg-config
Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev

  1. 下载opencv,opencv-contrib源码
    进如你想安装的文件夹,比如我创建了一个Software/opencv文件夹用于安装

  1. $ cd Software/opencv 
  2. $ git clone https://github.com/Itseez/opencv.git 
  3. $ git clone https://github.com/Itseez/opencv_contrib.git 
  1. 这时候你会在Software/opencv目录下发现两个文件夹 opencv和opencv_contrib,进入opencv文件夹,病创建一个编译文件夹,这个文件夹用于存放cmake之后的文件,我们这里创建名为build的文件夹。 然后进入build目录

  1. $ cd opencv 
  2. $ mkdir build 
  3. $ cd build 

然后开始编译

  1. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=~Software/opencv//local -D OPENCV_EXTRA_MODULES_PATH=~/Software/opencv/opencv_contrib/modules/ .. 

注意:

  • 最后的两个点(空格+两点)一定不能忽略

  • CMAKE_INSTALL_PREFIX 指定了编译后安装的路径,这里我在Software/opencv下新建了一个local文件夹,用于存在。在网上查到的许多资料中都是 CMAKE_INSTALL_PREFIX=/usr/local,但那得有root权限才可以,否则,向我们这样没有root权限的就会在后面安装过程中报错: /usr/local/ 没有权限

  • OPENCV_EXTRA_MODULES_PATH 是 opencv_contrib中modules的路径
    其他的参数我没用到,可以参看
    官方文档

  1. 编译成可执行文件,此时仍在build目录下

  1. make -j9 

make后面的参数表示并行的线程数

  1. 安装,依然在build目录下

  1. $ make install 

至此就安装完成opencv3.1和对应的contrib了
其中涉及到的目录结构
/Software
------------/opencv
-----------------------/local
-----------------------/opencv
--------------------------------/build
-----------------------/opencv_contrib

安装torch-opencv

参考官网torch-opencv installation

  1. luarocks install cv 

然后出现下面的错误

技术分享

1494665229582.jpg

SSE2是一种指令集,现在一般的服务器都应该支持。
我们可以查看服务器cpu信息:

  1. cat /proc/cpuinfo 

看是否支持SSE2
如下图

技术分享

1494665832070.jpg

可以看到我们用的服务器支持SSE2指令集
于是我们可以直接修改err信息中intrin_sse.hpp文件
将原文件中1796行所在的函数如下修改
技术分享

然后再次执行‘luarocks install cv‘
这个时候因为我们是在自己用户下安装的opencv,所以可能提示找不到opencv3.1需要指定我们编译的opencv3.1的目录

  1. OpenCV_DIR=~/Software/opencv/opencv/build/ luarocks install cv 

我在安装过程中还出现了xphoto不兼容的错误信息,所以按照教程,我把这个包给屏蔽了,那么最终安装torch-opencv代码为

  1. OpenCV_DIR=~/Software/opencv/opencv/build/ DONT_WRAP="xphoto;superres" luarocks install cv 

至此终于将torch-opencv安装成功

测试

技术分享

1494666445029.jpg

发现这时候可以成功调用cv.optflow包了 -

安装torch-opencv