OpenCV是一个基于开源发行的跨平台计算机视觉库,它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

工具/原料

 
  • Windows7
  • VMware Workstation 12 Pro
  • ubuntu-15.10
  • opencv-3.0.0.zip

一、安装关联库

 
  1. 1

    安装编译工具:

    sudo apt-get install build-essential

    编译程序有了这个软件,它才知道头文件和库函数在哪,最后才形成一个开发环境。

  2. 2

    安装 cmake、git、pkg-config等辅助工具:

    sudo apt-get install cmake git pkg-config libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev

  3. 3

    安装关联库:

    sudo apt-get install python-dev python-opencv python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

    END

二、编译OpenCV

 
  1. 1

    从网上下载OpenCV-3.0.0.zip。

    下载地址:

    http://opencv.org/downloads.html  (404 Not found)

    https://opencv.org/opencv-3-0.html

    the source code for all the platforms can be downloaded from GitHub: https://github.com/opencv/opencv/archive/3.0.0.zip

    Wish you pleasant experience with OpenCV 3.0!

  2. 2

    如果使用虚拟机,最好将OpenCV-3.0.0.zip移动到用户主目录下进行编译,一定不能在虚拟机在Windows系统里的共享文件夹下进行编译,否则会因为文件系统(Windows7的文件系统是NTFS,ubuntu-15.10的文件系统是)不同在编译过程中出错。鄙人在共享文件夹下进行编译,编译进行到%15时报错,我修复后又在编译进行到%21时报错,反正是各种错误,我是没有能力继续修复了......

  3. 3

    最好将OpenCV-3.0.0.zip移动到用户主目录下进行编译:

    mv [OpenCV-3.0.0.zip存放路径] ~/opencv_3.0.0.zip

    unzip opencv_3.0.0.zip

    cd opencv-3.0.0

    mkdir release

    cd release

  4. 4

    CMake是一个跨平台的编译工具,想深入学习cmake命令的可以百度一下。

    编译命令:

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..  (会报错)

    make时报错如下:

    //usr/lib/x86_64-linux-gnu/libsoxr.so.0: undefined reference to `GOMP_parallel@GOMP_4.0' collect2: error: ld returned 1 exit status

    使用以下命令:

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_OPENMP=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON -D WITH_GTK=ON WITH_GTK_2_X=OFF -D WITH_CUBLAS=ON -D WITH_NVCUVID=ON -D WITH_LAPACK=ON -D OPENCV_EXTRA_MODULES_PATH=/my/opencv_contrib/modules/path ..

  5. 5

    make命令(-j表示用几个线程来编译,这样可以加快编译速度,不过这个与makefile的质量有关,有的工程用了-j会编译出错):

    make -j $(nproc)

    make 后将报错,内容如下:

    modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/build.make:338: recipe for target 'modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o' failed make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... CMakeFiles/Makefile2:9578: recipe for target 'modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all' failed make[1]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs....

    解决如下:


    这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:直接进入 home/wang/opencv/modules/cudalegacy/src文件夹,修改graphcuts.cpp文件内容,如图: 

    其中,#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000) 是我们修改的。 
    修改以后重新make

    上述命令后一般大约要耗时1个小时,甚至更多,视个人电脑硬件配置而定。

    执行完以后不要忘了make install:

    sudo make install

  6. 6

    如果编译过程出错后想要重新编译,把release目录下的CMakeCache.txt删除掉即可。

    END

三、设置环境变量

 
  1. 1

    添加库路径:

    sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

  2. 2

    更新系统库:

    sudo ldconfig

    END

四、用cmake进行测试

 
  1. 1

    DisplayImage.cpp中的源代码:

    #include <stdio.h>

    #include <opencv2/opencv.hpp>

    using namespace cv;

    int main(int argc, char** argv)

    {

    if ( argc != 2 )

    {

    printf("[usage]: %s <Image_Path>\n", argv[0]);

    return -1;

    }

    Mat image;

    image = imread( argv[1], 1 );

    if ( !image.data )

    {

    printf("No image data!\n");

    return -1;

    }

    namedWindow("Display Image", WINDOW_AUTOSIZE );

    imshow("Display Image", image);

    waitKey(0);

    return 0;

    }

  2. 2

    CMakeLists.txt中的源代码:

    cmake_minimum_required(VERSION 2.8)

    project( DisplayImage )

    find_package( OpenCV REQUIRED )

    add_executable( DisplayImage DisplayImage.cpp )

    target_link_libraries( DisplayImage ${OpenCV_LIBS} )

  3. 3

    编译命令:

    cmake .

    make

    运行命令:

    ./DisplayImage 01.jpg

    END

五、用make进行测试

 
  1.  

    opencv_test.cpp中的源代码:

    #include "cv.h"

    #include "highgui.h"

    #include <iostream>

    using namespace std;

    #define PICTURE "./01.jpg"

    int main(void)

    {

    IplImage* img = cvLoadImage(PICTURE, 0);

    cvNamedWindow( "test", 0 );

    cvShowImage("test", img);

    cvWaitKey(0);

    cvReleaseImage( &img );

    cvDestroyWindow( "test" );

    return 0;

    }

  2.  

    Makefile中的源代码:

    CXX          = g++

    CFLAGS    = -Wall

    LDFLAGS  = `pkg-config --cflags --libs opencv`

    SRCS = $(wildcard *.cpp)

    TARGETS = $(patsubst %.cpp, %, $(SRCS))

    all:$(TARGETS)

    $(TARGETS):$(SRCS)

    $(CXX) -o $@ $< $(LDFLAGS) $(CFLAGS)

    clean:

    -rm -rf $(TARGETS) *~ .*swp

    .PHONY: clean all

  3. 3

    编译命令:

    make

    运行命令:

    ./opencv_test

    代码写得比较简单,所以显示效果是一张黑白图片。

     
    六 遇到的其他错误
    第二步cmake里面 需要下载文件ippicv_linux_20141027.tgz,可以使用网盘下载到指定文件夹下opencv-3.0.0/3rdparty/ippicv
    /downloads/linux-xxxxx/
    参考如下:

    Linux平台上安装OpenCV

    https://jingyan.baidu.com/article/14bd256e466474bb6d2612db.html

    Ubuntu16.04配置Darknet实现YOLO

    https://blog.csdn.net/u014797226/article/details/78429936

    opencv question

    http://answers.opencv.org/questions/

    http://answers.opencv.org/question/198341/makefile160-recipe-for-target-all-failed-make-all-error-2/

install opencv的更多相关文章

  1. $ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略

    博主之前写过一篇文章<html5与EmguCV前后端实现——人脸识别篇>,叙述的是opencv和C#的故事.最近在公司服务器上更新了一套nodejs环境,早就听闻npm上有opencv模块 ...

  2. [OpenCV] How to install opencv by compiling source code

    Introduction Install OpenCV and its dependence ! STEPs 1, compiler sudo apt-get install build-essent ...

  3. Install OpenCV 3.0 and Python 2.7+ on OSX

    http://www.pyimagesearch.com/2015/06/15/install-OpenCV-3-0-and-Python-2-7-on-osx/ As I mentioned las ...

  4. Install OpenCV 3.0 and Python 2.7+ on Ubuntu

    为了防止原文消失或者被墙,转载留个底,最好还是去看原贴,因为随着版本变化,原贴是有人维护升级的 http://www.pyimagesearch.com/2015/06/22/install-Open ...

  5. Install OpenCV on Ubuntu or Debian

    http://milq.github.io/install-OpenCV-ubuntu-debian/转注:就用第一个方法吧,第二个方法的那个sh文件执行失败,因为我价格kurento.org的源,在 ...

  6. [OpenCV] Install OpenCV 3.3 with DNN

    OpenCV 3.3 Aug 3, 2017 OpenCV 3.3 has been released with greatly improved Deep Learning module and l ...

  7. [OpenCV] Install OpenCV 3.4 with DNN

    目标定位 一.开始全面支持 Tensorflow OpenCV3.4 新功能 当前最新进展OpenCV 3.4 dev:https://github.com/opencv/opencv/tree/ma ...

  8. ubuntu 11.10 (64bit) install opencv 2.4.8 and run in Qtcreator

    install gtk2+ sudo apt-get install libgtk2.0*sudo apt-get install cmake-qt-gui tar xzvf opencv-2.4.8 ...

  9. Ubuntu 16.04: How to install OpenCV

    参考:https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ 步骤# 1:安装opencv的依赖项 本 ...

随机推荐

  1. python基础-第六篇-6.2模块

    python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...

  2. C++的全部目标就是最优化资源的利用,以人付出更多为代价。Python刚好是另一个极端(Bjarne就说,一个人至少应该掌握两种计算机语言)

    说 C++ 反人类,是如果把 C++ 看作人(程序员)和资源(电子系统)的桥梁,他的全部目标就是最优化资源的利用,以人付出更多为代价.Python刚好是另一个极端.做好两个一起学.Bjarne就说,一 ...

  3. Bad Hair Day---poj3250(栈的运用)

    题目链接:http://poj.org/problem?id=3250 题意: n个牛排成一列向右看,牛i能看到牛j的头顶,当且仅当牛j在牛i的右边并且牛i与牛j之间的所有牛均比牛i矮. 设牛i能看到 ...

  4. 15.Update Documents-官方文档摘录

    1.插入数据 db.inventory.insertMany( [ { item: "canvas", qty: 100, size: { h: 28, w: 35.5, uom: ...

  5. Using virtual lists

    Download demo project - 15.7 Kb Contents Introduction Virtual list Creating a virtual list Add items ...

  6. cordova 入门

    1. npm install -g cordova On Windows, npm can usually be found at C:\Users\username\AppData\Roaming\ ...

  7. bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory的解决方法------dos--->unix

    一些人喜欢用vim来写linux shell script, 但是, 有的人喜欢在Windows下用一些方便的编辑器(比如鼎鼎大名的Notepad++)写好, 然后拷贝文件到linux下, 结果呢, ...

  8. python subplot 合并子图的方法

  9. 读取、设置 php.ini配置文件(复制)

    1.ini_get()获取配置参数,ini_set()设置配置参数 复制代码 代码如下: <?phpecho ini_get('display_errors'); //1//动态修改php.in ...

  10. TypeError: Object of type 'int32' is not JSON serializable ——已解决

    将模型用flask封装,返回json时报错:TypeError: Object of type 'int32' is not JSON serializable 网上搜索出的解决方案:重写json.J ...