Liniux系统安装编译OpenCV(1)

一、安装

以下步骤针对Ubuntu 10.04进行了测试,对于其他发行版操作步骤相同。

Required Packages

必须安装
  • 安装GCC 4.4.x 版本或者更高版本
  • 安装 CMake 2.8.7版本或者更高版本
  • 安装Git
  • 安装GTK+2.0以后版本,同时安装libgtk2.0-dev
  • 安装pkg-config
  • 安装Python 2.6或更高版本以及Numpy 1.5或更高版本的开发人员包(python-dev,python-numpy)
可选安装
  • libtbb2 libtbb-dev

  • libdc1394 2.x

  • libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev

  • CUDA Toolkit 6.5 or higher
    可以使用终端和以下命令或使用Synaptic Manager安装软件包:

    [compiler] sudo apt-get install build-essential
    [required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    [optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    

Required Packages

你可以使用最新的稳定OpenCV版本,也可以从我们的Git存储库中获取最新的源码

Getting the Latest Stable OpenCV Version
  • 转到我们的下载页面
  • 下载源存档并解压缩。
Getting the Cutting-edge OpenCV from the Git Repository

启动Git客户端并克隆OpenCV存储库。 如果你需要来自OpenCV contrib repository里的模块,那么也可以克隆它。
For example:

cd ~/<my_working_directory>
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

Building OpenCV from Source Using CMake

  1. 创建一个临时目录,我们将其表示为<cmake_build_dir>,您要在其中放置生成的Makefile,项目文件以及目标文件和输出二进制文件并进入那里。
    For example:

     cd ~/opencv
     mkdir build
     cd build
    
  2. 配置cmake运行路径:[<some optional parameters>] <path to the OpenCV source directory>
    For example:

     cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ...
    

或者make-gui

  • 设置OpenCV源代码的完整路径,例如/ home / user中/ OpenCV的
  • 设置<cmake_build_dir>的完整路径,例如/ home / user中/ OpenCV的/编译
  • 设置可选参数
  • 运行:“配置”
  • 运行:“生成”
    Note

    如果上面的示例不起作用,请使用cmake -DCMAKE_BUILD_TYPE = Release -DCMAKE_INSTALL_PREFIX = / usr / local ..,在-D后没有空格。

  1. 参数使用说明
  • 构建类型:CMAKE_BUILD_TYPE = Release \ Debug
  • 使用opencv_contrib模块构建OPENCV_EXTRA_MODULES_PATH到<opencv_contrib / modules />的路径
  • 设置BUILD_DOCS以构建文档
  • 设置BUILD_EXAMPLES以构建所有示例
    Note

如果创建的库的太大在一些硬件环境中(例如在Android构建的情况下),你可以使用install / strip命令来获得最小的大小。 此时版本所需空间将会比原先版本较少两倍。 然而除非那些额外的大文件确实很重要,否则我们不建议使用它。

二、使用gcc和cmake完成第一个opencv程序

Note

如果上边OpenCV已经完成了安装,下来我们开始写第一个Opencv程序。

  • 在代码中使用OpenCV的最简单方法是使用CMake,且有一些无法取代的优点(出自Wiki):
    1. 在Linux和Windows之间移植时无需更改任何内容
    2. 可以很容易地与CMake的其他工具结合使用(即Qt,ITK和VTK)

步骤

Create a program using OpenCV

我们写一个简单的程序,如:DisplayImage.cpp。

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
    if ( argc != 2 )
{
    printf("usage: DisplayImage.out <Image_Path>\n");
    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;
}
Create a CMake file

现在您必须创建CMakeLists.txt文件,如下所示:

 cmake_minimum_required(VERSION 2.8)
 project( DisplayImage )
 find_package( OpenCV REQUIRED )
 include_directories( ${OpenCV_INCLUDE_DIRS} )
 add_executable( DisplayImage DisplayImage.cpp )
 target_link_libraries( DisplayImage ${OpenCV_LIBS} )
Generate the executable(生成可执行文件)

这部分很简单,就像使用CMake的任何其他项目一样:

cd <DisplayImage_directory>
cmake .
make
Result

到目前为止,您应该有一个可执行文件(在本例中称为DisplayImage)。 你必须运行它,给出一个图像位置作为参数,即:

./DisplayImage lena.jpg

您应该得到一个漂亮的窗口,如下所示:


GCC_CMake_Example_Tutorial.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358