从源码安装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创建一个新的用户 ...
随机推荐
- 如何打卡后缀为3ds的文件
打开.3DS文件 3DS文件怎么打开? 用它吧:a3dsviewer,顾名思义,一个3D文件浏览工具,为用户提供一个快速和简单的3DS文件浏览器很容易. 这里是一些主要特点的“a3dsviewer”: ...
- T4模板之文本模板
网址:https://docs.microsoft.com/en-us/visualstudio/modeling/design-time-code-generation-by-using-t4-te ...
- 原 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f8-bus/ 本文出自方志朋的博客 转载请标明出处: Spr ...
- mysql存储过程和函数(一)
存储过程和函数是事先经过编译并存储在数据库的一段sql语句集合,调用存储过程和函数可以简化应用程序开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对提高数据运行效率是有好处的. 存储过程和 ...
- 通过xshell在linux上安装redis3.0.0
通过xshell在linux上安装redis3.0.0 0)首先要安装环境:yum install gcc-c++ 1)通过xftp6将redis安装包上传到linux:解压缩:tar -xvfz r ...
- LintCode 12.带最小值操作的栈(两种方法实现)
题目描述 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值. 你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成. 样例 如下操作:push(1 ...
- Linux给当前用户指定目录授权命令
使用命令: chown -R user:user ./local 说明:user 为当前用户: 完毕!
- 第一次使用Git上传本地项目到github
看了好多帖子,终于在混乱中找到自己适合的方法......自我感觉这个比较简单. 先安装本地git,官方下载地址:http://git-scm.com/download/ 根据你自己的系统 下载对应版 ...
- Laravel-admin 当使用Form组件hasMany的时候 进行编辑出现错误 foreach错误的时候解决方案
我的关联关系原名是 goodImage 修改成 image 之后解决问题 分析得出应该是 laravel会将goodImage 转成 good_image字段 这样就foreach会报错 所以出 ...
- Python学习:运算符
简单运算符: +(加) 两个对象相加 -(减) 从一个数中减去另一个数,如果第一个操作数不存在,则假定为零 *(乘) 给出两个数的乘积,或返回字符串重复指定次数后的结果 Eg.'haha' * 3 ...