从源码安装opencv
操作系统为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的更多相关文章
- Ubuntu16 编译源码安装MXNet 可变卷积Deformable-ConvNets GPU版
[引言]最近接手了公司的关于虫子识别的项目,使用MXNet框架开发,但是实际用的是Deformable-ConvNets. Deformable-ConvNets为微软研究研究院提出的可变卷积网络,可 ...
- ubuntu 16.04下源码安装opencv3.4
源码安装opencv,遇到了一些小波折,这里做个备忘吧. 首先要下载源码,路径: https://github.com/opencv/opencv 下载成功后,在opencv的根目录下执行下面操作: ...
- Ubuntu16.04 / OpenCV / Python 源码安装
为什么需要源码安装? 1. 对 Python 版的 OpenCV,Ubuntu 有两种安装方式: 源码安装:官网(https://opencv.org/releases.html)下载源代码,在机器上 ...
- win10 vs2015源码编译opencv、opencv_contrib、Tesseract
1.软件包准备 opencv源码包地址: 官网 github opencv_contrib源码包地址: github Tesseract源码包地址: ...
- [笔记] Ubuntu 18.04源码安装caffe流程
虽然Ubuntu 18.04可以通过apt安装caffe,但是为了使用最新的代码,还是值得从源码安装一遍的. 安装环境 OS: Ubuntu 18.04 64 bit 显卡: NVidia GTX 1 ...
- 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 ...
- 搭建LNAMP环境(七)- PHP7源码安装Memcached和Memcache拓展
上一篇:搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展 一.安装Memcached 1.yum安装libevent事件触发管理器 yum -y install libe ...
- 搭建LNAMP环境(二)- 源码安装Nginx1.10
上一篇:搭建LNAMP环境(一)- 源码安装MySQL5.6 1.yum安装编译nginx需要的包 yum -y install pcre pcre-devel zlib zlib-devel ope ...
- 搭建LNAMP环境(一)- 源码安装MySQL5.6
1.yum安装编译mysql需要的包 yum -y install gcc-c++ make cmake bison-devel ncurses-devel perl 2.为mysql创建一个新的用户 ...
随机推荐
- HDU 1210 Eddy's 洗牌问题(找规律,数学)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1210 Eddy's 洗牌问题 Time Limit: 2000/1000 MS (Java/Other ...
- 【Linux-CentOS】在无互联网-内网环境的Windows7主机上安装CentOS双系统,从安装到放弃
2018.12.3 日更新:本文仅作为无互联网环境下安装的参考.更推荐在互联网环境下安装软件和使用系统,毕竟会自动安装依赖包,比较方便. 因个人办公电脑装的盗版Win7总是蓝屏,影响工作,加之看到 W ...
- iOS 从0到1搭建高可用App框架
iOS 从0到1搭建高可用App框架 最近在搭建新项目的iOS框架,一直在思考如何才能搭建出高可用App框架,能否避免后期因为代码质量问题的重构.以前接手过许多“烂代码”,架构松散,底层混乱,缺少规范 ...
- 打造开源GIS方案
现在GIS用途较多,最近要有所接触,所以决定自己打造一个已经又的方案.均以Java作为开发 二位地图:客户端:geotools,swing,geoserver; web:openlayer,geose ...
- javaWeb项目加载HTML文件时报错 [No Find /index.html]
直接上主题: 在web.xml文件中添加如下信息: <display-name>Spring MVC Application</display-name> <servle ...
- linux命令之压缩与归档
1. gzip:压缩工具 语法·:gzip [选项](参数) 命令说明:运用广泛的压缩程序,文件经它压缩后,其名称后面以“.gz”扩展名 常用命令选项: -N:压缩文件后,保留文件的原文件名和时间 ...
- 清除input框的缓存
html <div class="container"> <form class="parent" autocomplete="of ...
- vue 中父子组件之间的交互
1,最直接的也是最简单的方法是利用props来数据传值. 子组件定义如下: props: { iconClass: { type: String, required: true }, classNam ...
- dedecms左侧导航栏不显示问题
dedecms左侧导航栏不显示问题 在做织梦项目时,经常会碰到后台左侧导航栏不显示的问题,如下所示: 这主要是由于文件权限不足造成的.有两种方法 第一种:把 /data 文件夹全部改成 777 权 ...
- Hadoop(23)-Yarn资源调度器
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序 1. Yarn工作机制 机制详解 第1 ...