一、前言
运行环境:
ubuntu kylin 14.04
opencv 2.4.11
由于某些软件包对opencv2.4的支持暂不更新到opencv3
opencv">二、下载opencv
在opencv官网下载源代码:https://github.com/Itseez/opencv/archive/2.4.11.zip
然后解压得到opencv-2.4.11文件夹,我把它放在主文件夹~/下面
安装opencv依赖的软件包">三、安装opencv依赖的软件包
$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
注意有的地方安装opencv出现如下提示是因为所依赖的软件包版本已经更新,请对照上面的命令安装新的软件包版本:
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
注意,选取 libpng12-dev 而非 libpng-dev
注意,选取 libtiff5-dev 而非 libtiff-dev
现在没有可用的软件包 libdc1394-dev,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
E: 软件包 libdc1394-dev 没有可供安装的候选者
四、编译源码
在opencv-2.4.11文件夹中新建一个临时目录release用来存放安装过程中产生的文件
$ cd ~/opencv-2.4.11
$ mkdir release
在release目录下cmake编译opencv源码,安装所有的lib文件都会被安装到/usr/local目录下
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
安装opencv">五、安装opencv
$ make
$ sudo make install
等得进度到100%最后安装完成,无报错的话就可以用了
测试">六、测试
随便在一个工作目录下新建一个cpp文件,我的是在~/work/testopencv文件夹下
//testopencv.cpp
#include <cv.h>
#include <highgui.h>
using namespace cv;
int main(int argc, char* argv[])
{
Mat image;
image = imread(argv[1], 1);//argv[1]是运行时需要带的参数,这里是图片的路径
if (argc != 2 || !image.data)
{
printf("No image data\n");
return -1;
}
namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
imshow("Display Image", image);
waitKey(0);
return 0;
}
再在该目录下新建CMakeLists.txt,注意我这里project是testopencv,可执行文件也是testopencv
project(testopencv)
find_package(OpenCV REQUIRED)
add_executable(testopencv testopencv)
target_link_libraries(testopencv ${OpenCV_LIBS})
cmake_minimum_required(VERSION 2.8)
记得保存上述文件。
然后编译一下这个cpp文件
$ cd ~/work/testopencv
$ cmake .
$ make
在该目录下生成了testopencv可执行文件(不要落了camke后面的“.”)
再找一张图片名字叫t1.jpg,放在~/work/testopencv目录下
然后运行这个可执行文件(带上参数t1.jpg)
$ ./testopencv t1.jpg
结果就是显示这张图片