操作系统为Debian9,由于使用apt-get安装在/usr/lib目录下的opencv可能会造成一些项目上的头文件错误问题,所以选择了从源码安装。

选择opencv3.4.1, 进入https://opencv.org/releases.html选择3.4.1的sources下载。解压后,进入该目录。参照https://docs.opencv.org/3.4.1/d7/d9f/tutorial_linux_install.html 进行安装。

步骤:

1.创建build目录

mkdir build; cd build

2.配置

使用cmake-gui。这里由于是自定义安装,所以不应该安装网页上的命令cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. 进行。否则,可能会装到/usr/local目录下。

选择解压后的opencv目录路径,和build目录路径。这里 set optional parameters不需要进行操作。

点击configure,会出现很多配置选项,唯一需要修改的是install directory,具体的参数名不记得了,鼠标放在上面会有提示。把这个目录修改为你想安装到的目录。如果不修改的话,默认是/usr/local。

点击generate。

3. make 。

4.make install。这样会把include, lib, bin, share这四个目录安装到在第二步中配置的安装目录里。

5验证,生成.mat文件。

程序:

#include<iostream>
#include<fstream>
#include<opencv2/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp> using namespace std; void writeMat(const cv::Mat& image, const string name){
ofstream ofs(name, ios::out|ios::app);
ofs<<image.cols <<" "<<image.rows<<" ";
for(int i=; i<image.cols*image.rows*; i++){
ofs<<(int)image.data[i]<<" ";
}
ofs.close();
} int main(int argc, char** argv){
string imageName("timg.jpeg");
if(argc > ){
imageName = argv[];
}
cv::Mat image;
image = cv::imread(imageName, cv::IMREAD_COLOR);
if(image.empty()){
cout<<"Could not open or find the image" << endl;
return -;
}
string name = "temp.mat";
writeMat(image, name);
return ;
}

编译:g++ main.cpp -I opencv_install_directory/include -L opencv_install_directory/lib -lopencv_highgui -lopencv_core -lopencv_imgcodecs

后面的-lopencv_core -lopencv_imgcodecs需要加上,否则会报错:

/usr/bin/ld: /tmp/cc9NW3Sj.o: undefined reference to symbol '_ZN2cv6imreadERKNS_6StringEi'
//home/benxu/Documents/Workspace/opencv/install/lib/libopencv_imgcodecs.so.3.4: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status。

这里加上后,还是会报错:类似于这样

openCV program compile error “libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory” in ubuntu 12.04

虽然在 opencv_install_directory/lib中已经包含了libopencv_highgui.so.3.4文件,不过它是一个引用链接,指向libopencv_highgui.so.3.4.10。

解决办法参考网址:https://stackoverflow.com/questions/12335848/opencv-program-compile-error-libopencv-core-so-2-4-cannot-open-shared-object-f

这里需要指出的是,在用户安装了一个新的动态链接库时,需要手工运行ldconfig命令。

在/etc/ld.so.conf目录下新建opencv.conf,在里面添加:opencv_install_directory/lib路径。

运行:ldconfig -v。

然后再运行上面的编译命令,即可顺利执行。

从源码安装opencv的更多相关文章

  1. Ubuntu16 编译源码安装MXNet 可变卷积Deformable-ConvNets GPU版

    [引言]最近接手了公司的关于虫子识别的项目,使用MXNet框架开发,但是实际用的是Deformable-ConvNets. Deformable-ConvNets为微软研究研究院提出的可变卷积网络,可 ...

  2. ubuntu 16.04下源码安装opencv3.4

    源码安装opencv,遇到了一些小波折,这里做个备忘吧. 首先要下载源码,路径: https://github.com/opencv/opencv 下载成功后,在opencv的根目录下执行下面操作: ...

  3. Ubuntu16.04 / OpenCV / Python 源码安装

    为什么需要源码安装? 1. 对 Python 版的 OpenCV,Ubuntu 有两种安装方式: 源码安装:官网(https://opencv.org/releases.html)下载源代码,在机器上 ...

  4. win10 vs2015源码编译opencv、opencv_contrib、Tesseract

    1.软件包准备 opencv源码包地址:                官网  github opencv_contrib源码包地址:   github Tesseract源码包地址:        ...

  5. [笔记] Ubuntu 18.04源码安装caffe流程

    虽然Ubuntu 18.04可以通过apt安装caffe,但是为了使用最新的代码,还是值得从源码安装一遍的. 安装环境 OS: Ubuntu 18.04 64 bit 显卡: NVidia GTX 1 ...

  6. mono-3.4.0 源码安装时出现的问题 [do-install] Error 2 [install-pcl-targets] Error 1 解决方法

    Mono 3.4修复了很多bug,继续加强稳定性和性能(其实Mono 3.2.8 已经很稳定,性能也很好了),但是从http://download.mono-project.com/sources/m ...

  7. 搭建LNAMP环境(七)- PHP7源码安装Memcached和Memcache拓展

    上一篇:搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展 一.安装Memcached 1.yum安装libevent事件触发管理器 yum -y install libe ...

  8. 搭建LNAMP环境(二)- 源码安装Nginx1.10

    上一篇:搭建LNAMP环境(一)- 源码安装MySQL5.6 1.yum安装编译nginx需要的包 yum -y install pcre pcre-devel zlib zlib-devel ope ...

  9. 搭建LNAMP环境(一)- 源码安装MySQL5.6

    1.yum安装编译mysql需要的包 yum -y install gcc-c++ make cmake bison-devel ncurses-devel perl 2.为mysql创建一个新的用户 ...

随机推荐

  1. 【其它】Nook HD刷机

    很久以前的 Nook HD 平板刷机.只能用 microSD(TF)卡刷.需要的软件全都保存在了自己的百度网盘,自己亲测有效. 一.准备工作 1.首先,将tf卡格式化为fat32格式,实测可以使用.将 ...

  2. [Oracle]Oracle表权限小结

    在数据库中,表是我们接触得最多的数据库对象,接下来对与表有关的系统权限与对象权限做一个小结. (1)与表有关的系统权限 CREATE TABLE 在当前Schema中创建.删除.修改表. SELECT ...

  3. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--K-密码

    链接:https://www.nowcoder.com/acm/contest/90/K 来源:牛客网 - 1.题目描述 ZiZi登录各种账号的时候,总是会忘记密码,所以他把密码都记录在一个记事本上. ...

  4. 2822: [AHOI2012]树屋阶梯

    Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1161  Solved: 694[Submit][Status][Discuss] Descriptio ...

  5. BZOJ3668: [Noi2014]起床困难综合症(贪心 二进制)

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2708  Solved: 1576[Submit][Status][Discuss] Descript ...

  6. NFS网络文件系统详解

    第1章 NFS基本概述 1.1 什么是nfs NFS是Network File System的缩写及网络文件系统. 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录. NFS系统和Wind ...

  7. git 上传到码云

    创建分支 在码云里创建好分支 命令行进入项目所在的目录 显示码云上的分支 git pull 选择将要编辑的分支(index-fenzhi) git checkout index-fenzhi 查看分支 ...

  8. webpack打包之后背景图不显示的问题

    修改build/utils.js文件里面的ExtractTextPlugin,添加:publicPath: ‘…/…/’,具体代码如下:

  9. 三角形div原理(小知识点)

    三角形div其实就是从边框的演变过程 #sider2{ width: 100px; height: 100px; border-top: 30px solid #000; border-right:  ...

  10. __name__ 和 "__main__"

    本模块名: person 调用者模块名: start import sys def funcperson(): print('我是人') print(sys.modules[__name__]) # ...