从源码安装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=0; i<image.cols*image.rows*3; i++){
        ofs<<(int)image.data[i]<<" ";
    }
    ofs.close();
}

int main(int argc, char** argv){
    string imageName("timg.jpeg");
    if(argc > 1){
        imageName = argv[1];
    }
    cv::Mat image;
    image = cv::imread(imageName, cv::IMREAD_COLOR);
    if(image.empty()){
        cout<<"Could not open or find the image" << endl;
        return -1;
    }
    string name = "temp.mat";
    writeMat(image, name);
    return 0;
}

编译: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。

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

原文地址:https://www.cnblogs.com/benbencoding798/p/9141439.html

时间: 2024-12-11 22:39:20

从源码安装opencv的相关文章

源码编译opencv的安卓Android库

因为项目需要,稍微改了opencv一点源码,这个时候就需要源码编译opencv的库了.我pc机器上面试了没有问题,但是我们项目是跑在移动设备安卓上面的,算法通过jni打包接口供上层java调用,opencv用的安卓版本的,这就坑爹了,没办法,我就编译安卓版本的opencv吧,这里面的坑真多. 参考链接: https://www.jianshu.com/p/925614d6e9e0 OpenCV3.4源码交叉编译android库 https://blog.csdn.net/Martin_chen2

centos7.2源码安装openssl1.0.2

centos7.2默认是安装了opensll软件包的,但是部署个别服务时,由于版本太低.会影响服务的正常部署.只能使用源码安装提高openssl软件版本. 因为之前有openssl软件包,所以要先移除之前版本: 删除旧版本: yum remove -y openssl openssl-devel 源码安装openssl需要perl环境编译,如果没有perl环境还是需要安装: yum -y install perl perl-devel 现在新版本openssl: wget https://www

centos6.5 64 源码安装redis服务,建立可远程连接的redis数据库

安装环境:centos6.5 64位 使用的包:redis-2.8.19.tar.gz  tcl8.6.3-src.tar.gz 包的下载链接:http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz http://download.redis.io/releases/redis-2.8.19.tar.gz 本次安装的目录/home/hadoop/redis为任意目录 代码实现: 1,安装需要的支持环境 su root cd /home/h

ubuntu php5.6源码安装

今天又花了一天时间装了php,感觉php的源码安装也挺麻烦的,整个过程各种报错. 下篇文章准备整合所有查找到的报错和解决方法. php和nginx一样,在安装前需要装一堆的依赖.有libmcrypt.mcrypt.mhash.其实远不止这三个包,在后面的configure和make中还会陆陆续续安装一些依赖. 1.安装libmcrypt.mcrypt.mhash(整个过程都在/usr/local/src/php目录下) #创建/usr/local/src/php目录并进入mkdir /usr/l

LinuxMint下的Orionode源码安装

1. Orionode介绍 Eclipse-orion是Eclipse项目下面的一个子项目,orion是一个在在线版的代码编辑环境.其介绍参考http://wiki.eclipse.org/Orion. Eclipse-orion是使用Java语言开发的, Orionode则是使用Node.js开发的一个简易版orion.关于orionode跟orion的特性差异请查考http://wiki.eclipse.org/Orion/Node/Getting_started. 2. Node.js和n

nsq 学习(一)源码安装nsq

1.源码安装nsq go get github.com/tools/godep go get github.com/bmizerany/assert godep get github.com/bitly/nsq/... godep执行之后,如果报错: godep: outdated Godeps missing source code This dependency list was created with an old version of godep. To work around thi

bash-scripts源码安装lamp(apache、php及部分扩展、mysql)

安装包版本:httpd-2.2.29.tar.gzzlib-1.2.8.tar.gzapr-util-1.5.4.tar.gzapr-1.5.1.tar.gzlibpng-1.6.17.tar.gzjpegsrc.v9a.tar.gzlibgd-gd-2.1.1.tar.gzphp-5.6.7.tar.gzfreetype-2.5.5.tar.gzlibmcrypt-2.5.8.tar.gzlibxml2-2.9.2.tar.gzmysql-5.6.23.tar.gz ======安装包下载网站

php源码安装

我是将下载好的软件包放到虚拟机 /home目录下,虚拟机是centos6.4 如果想了解nginx源码安装http://blog.csdn.net/zkg510168343/article/details/43703635 mysql源码安装 http://blog.csdn.net/zkg510168343/article/details/43284071 PHP安装前准备,软件包下载地址 libmcrypt包 http://sourceforge.net/projects/mcrypt/fi

PHP-5.3.27源码安装及nginx-fastcgi配置

源码安装php cat /etc/redhat-release uname -rm wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum install -y zlib-devel libxml2-devel libjpeg-turbo-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel opens