怎么安装opencv linux

怎么安装opencv linux,第1张

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

工具:

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

步骤:

一、安装关联库

1、安装编译工具:sudo apt-get install build-essential

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

2、安装 cmake、git、pkg-config等辅助工具:sudo apt-get install cmake git pkg-config libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev

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

二、编译OpenCV

1、从网上下载OpenCV-3.0.0.zip。下载地址http://opencv.org/downloads.html

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

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、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 ..

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

make -j $(nproc)

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

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

sudo make install

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

三、设置环境变量

1、添加库路径:sudo /bin/bash -c 'echo "/usr/local/lib" >/etc/ld.so.conf.d/opencv.conf'

2、更新系统库:sudo ldconfig

四、用cmake进行测试

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、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、编译命令:

cmake .make

运行命令:./DisplayImage 01.jpg

五、用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

编译命令:

make

运行命令:

./opencv_test

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

交叉编译opencv主要参考了这篇文章:

https://blog.csdn.net/kaychangeek/article/details/80113289

一、如何配置cmake

1、where is the source code:即opencv源码路径

where to build the binaries:编译生成的库文件放在这个路径下,自己设置的,自己记住就好

2、点configure按钮,d出配置窗口,选最后一个,然后next。

3、输入自己的交叉编译器路径,第三方库路径,finish

4、等一会,cmake会出现编译选项,自行修改

我也不太清楚这里面每一个组件的具体用途,就根据网上别人给出的选项作了修改

找到BUILD_ZLIB,勾选上

找到OPENCV_GENERATE_PKGCONFIG,勾选上。这是生成.pc文件的选项

build_opencv_gapi不勾选。不去掉会编译报错

#疑问:是不是选中了witn_xxx选项,就要同时选中build_xxx选项?前面的交叉编译第三方依赖库有用吗?

修改cmake_build_type为Release

修改cmake_install_prefix为你自己的输出文件夹

点Generate,生成Makefile

二、编译

使用gedit打开build路径下的CMakeCache.txt文件,找到CMAKE_EXE_LINKER_FLAGS选项在后面加上:-lpthread -lrt。这是一个多线程链接库

make &&make install

三、配置.pc文件

成功编译的话,你会在输出路径下找到你的库文件

然后你还会在~/lib/pkgconfig下找到你的.pc文件

因为我的电脑也装了x86平台的opencv库,为了便于区分,我把这个.pc文件改成了opencv_arm.pc,然后复制进了pkgconfig的默认路径下。

四、验证

最后验证一下:在samples/CPP中找个例程编译一下:(必须加上-std=c++11,opencv必须有c++2011支持)

大功告成!!!

装这个东西一共花了我了五天时间,几乎每一步我都会遇到问题,好在有各路网友的分享我才能成功。向开源精神致敬!!!

[cpp] view plain copy

sudo apt-get install build-essential

sudo apt-get install cmake

sudo apt-get install libgtk2.0-dev

sudo apt-get install pkg-config

sudo apt-get install python-dev python-numpy

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev

进入目录opencv-3.1.0,然后cmake生成makefile:

先把我的安装历史纪录给大家看下吧,大家也好心里有数

[html] view plain copy

make .

然后

[html] view plain copy

make && make install

这下子代码插入了。

现在我们做的就是该怎么找到opencv库了:

首先打开这个文件,在最后一行添加一句话,当然它也可能是空的,没影响。

[html] view plain copy

sudo vim /etc/ld.so.conf.d/opencv.conf

最后一行添加

[html] view plain copy

/usr/local/lib

运行以下代码配置库:

[html] view plain copy

sudo ldconfig

现在打开另一个文件,添加环境变量:

sudo gedit /etc/bash.bashrc

在这个文件的末尾添加下面两行:

[html] view plain copy

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH

然后测试:

[html] view plain copy

cd ~

vim hello.cpp

[cpp] view plain copy

#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

}

然后编译:

[html] view plain copy

g++ `pkg-config --cflags opencv` -o hello hello.cpp `pkg-config --libs opencv`

然后运行:

[html] view plain copy

./hello psb\ 1.jpg

后面的psd是图片路径,由于我是在服务器上运行的,所以没办法显示出来,服务器默认是没有装Xwindow的,我装了,但是报了一堆错,就放弃了

[html] view plain copy

root@iZ28gdz88j1Z:~# ./hello psb\ 1.jpg

(Display Image:25620): Gtk-WARNING **: cannot open display:

希望能够帮助到你


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7283925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存