码迷,mamicode.com
首页 > 其他好文 > 详细

从源码安装opencv

时间:2018-06-05 20:02:19      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:ogr   .com   bsp   opencv   overflow   自定义   err   命令   操作   

操作系统为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。

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

 

从源码安装opencv

标签:ogr   .com   bsp   opencv   overflow   自定义   err   命令   操作   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!