Ubuntu16.04编译安装OpenCV3.20

本文介绍了在Ubuntu16.04系统上通过源码和cmake编译安装OpenCV3.2的过程,包括依赖库准备、源码下载与解压、编译安装和测试。适合Linux初学者和嵌入式图像处理项目开发者参考。
摘要由CSDN通过智能技术生成

近期做一个嵌入式项目,可能会涉及到图像处理这方面的内容,因此决定先在Ubuntu上安装一个OpenCV试试水,顺便我这个Linux小白也学学Linux这个系统,在看了网上很多相关教程之后,终于摸索出了安装方法。

OpenCV官网提供了源码,因此在这里我选择使用较为普遍的 源码+cmake这种安装方式。

安装前的一些依赖库准备

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

安装

1、首先从OpenCV官网下载源码的压缩包opencv-3.2.0.zip,然后把它解压

sudo unzip ~/Downloads/opencv-3.2.0.zip -d ~/

2、进入opencv文件夹,新建build文件夹编译用

cd ~/opencv-3.2.0
mkdir build
cd build
3、接下来我们需要使用cmake编译整个OpenCV,CMakeFile附带在压缩包中不需要自己去写(谢天谢地),最后那两个点不能省,否则目录不正确,无法完成编译。

嗯,可以去掉试一试。

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
安装过程中需要它会下载一个ippicv_linux_20151201.tgz,这个能不能成看网速+脸,网速好脸白当然最好,网不好脸黑也不怕,可以百度一下这个包,手动安装,我没手动安就不胡说了,网上有教程可以参考一下。

4、接下来就是编译,安装。因为安装需要更高的权限,所以说记得加sudo。这个make比较占时间,网上说-j可以多线程加速,不过貌似有的电脑加了-j用不成GG,就没试。

make
sudo make install
网上好多教程到这就结束安装,开始测试了,我当时也是满怀希望的写了HelloWorld.cpp编译了一下,然后各种undefined reference,Linux小白肝了一阵重装也是不行,后来发现其实是链接库的问题。

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
搞定,测试。

测试

先运行一下cv库自带的测试程序(opencv-3.2.0/samples)

cd ~/opencv-3.2.0/samples/cpp/tutorial_code/introduction/display_image
./display_image ~/opencv-3.2.0/samples/data/lena,jpg
没问题的话Lena的照片会显示出来

嗯,看到她我就莫名开心,因为至少OpenCV应该是可以用了,然后我们再来写一个自己的程序试试。

#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <iostream>
#include <string>

using namespace std;
using namespace cv;

int main(int argc, char **argv) {
    // 读取图片
    Mat img = imread(argv[1])
    // 创建一个窗口
    namedWindow("display window", WINDOW_AUTOSIZE);
    // 在窗口里显示该图片
    imshow("display window", img);
    // 等待键盘输入
    waitKey(0);
    return 0;
}
存到CVTEST.cpp里,我们依旧使用cmake编译。因为我真的是一个Windows下长大的Linux小白,写CMakeLists.txt也折腾我了一阵,最开始仿照网上的CMakeLists改了一个

cmake_minimum_required(VERSION 2.8)
project( CVTEST )
find_package( OpenCV REQUIRED )
add_executable( CVTEST CVTEST.cpp )
target_link_libraries( CVTEST ${OpenCV_LIBS} )

存好然后编译

cmake .
make

但怎奈脸太黑,make完又是各种undefined reference,链接又炸了,很无奈(哭晕在厕所)。之前我们能看到Lena小姐姐,说明我们OpenCV大体上安装应该没问题,所以说出问题应该在CMakeLists上,于是我参考了一下sample里面的CMakeLists,发现了这么一句:

ocv_target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_CPP_SAMPLES_REQUIRED_DEPS})
哎?OPENCV_LINKER_LIBS不就是我们需要的链接库嘛,,于是在自己的CMakeLists里加上OPENCV_LINKER_LIBS

cmake_minimum_required(VERSION 2.8)
project( CVTEST )
find_package( OpenCV REQUIRED )
add_executable( CVTEST CVTEST.cpp )
target_link_libraries( CVTEST ${OpenCV_LIBS} ${OPENCV_LINKER_LIBS} )
然后再编译

cmake .
make

直接过,把我们的Lena小姐姐照片或者其他什么照片复制过去然后运行,应该可以看到照片,至此我们的安装结束。

总之OpenCV3.2就这么稀里糊涂地装过来了,中间还有好多不解的地方留待以后慢慢研究。







评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值