Ubuntu18.04安装OpenCV3.4.2及编译opencv程序的两种方式

1、Ubuntu18.04安装Opencv3.4.2

安装opencv通用版参考博客
安装过程中遇到一些问题,总结如下:
1.执行:sudo apt-get install libpng12-dev
遇到问题:Package 'libpng12-dev' has no installation candidate
改为:sudo apt-get install libpng-dev
2.执行:sudo apt-get install libjasper-dev
遇到问题:Unable to locate package libjasper-dev
执行下面语句成功解决问题:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main`
sudo apt update
sudo apt install libjasper1 libjasper-dev 

其中libjasper1是libjasper-dev的依赖包

3.执行:sudo make
遇到问题:../../lib/libopencv_imgcodecs.so.3.4.2: undefined reference to TIFFWriteScanline@LIBTIFF_4.0
将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 ..
改为: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 -D BUILD_TIFF=ON ..
即最后加了一句-D BUILD_TIFF=ON
修改之后便可以顺利安装opencv通用版

2、linnux下编译opencv程序的两种方式g++,cmake

opencv配置好以后,下面讲一下怎么编译opencv程序。
这是一段简单的opencv程序代码,在Linux终端怎么运行呢?

//testOpencv.cpp
#include <iostream>
#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
int main()
{
    Mat srcImage = imread("lena.jpg");
    imshow("源图像",srcImage);
    waitKey(0);
    return 0;
}
  • 使用g++编译写好的代码
    gcc和g++分别是GNU的C&C++编译器,其编译过程可分为四步:
    (1)预处理:生成.i的文件
    (2)将预处理的文件转换成汇编语言,生成文件.s
    (3)由汇编变为目标代码(机器代码)生成.o的文件
    (4)连接目标代码,生成可执行程序
    g++编译命令有很多可选择项,可以根据不同的需要使用,具体请自行查阅。普通的g++编译命令如下:
g++ hello.cpp -o hello
./hello

其中hello.cpp是要编译的cpp名称,生成的可执行文件是hello。
如果编译opencv程序,则需要将opencv的库包含进去,编译命令如下:

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

其中,pkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息。
值得注意的是,一定要使用倒引号包含命令(什么是倒引号,好吧,就是键盘上波浪线那个键,按住shif输出~,不按Shift则输出倒引号),而不是单引号,否则编译出错。
生成可执行文件testOpencv,接下来运行它

./testOpencv
  • 使用cmake编译opencv程序
    首先要确保安装了cmake,然后建立一个CMakeList.txt的文件,输入如下内容
cmake_minimum_required(VERSION 2.8)  // 这是对CMake工具最低版本要求
project(OpencvExample)  //这是建立一个工程项目(类似于我们VS中建立C++项目一样),括号里面时工程名,工程名我们可以任意给,最后程序编译出来的可执行文件就是这个名字
find_package(OpenCV REQUIRED)   //这是cmake用来查找opencv包用的
add_executable(OpencvExample testOpencv.cpp)   //括号里面的两个参数分别是工程项目名和我们要编译文件名,如果有多个.h ,.cpp文件要编译,都写在这里,记住中间用空格键隔开
target_link_libraries(OpencvExample ${OpenCV_LIBS})    //这是我们链接到OpenCV库的环节

将所有的文件包括CMakeList.txt,自己编写的头文件,源文件等放入名子为OpencvExample的文件夹中,在终端进入到该文件下,然后输入以下命令:

cmake .
make
./OpencvExample

便可以的得到程序的运行结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值