标签: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。
然后再运行上面的编译命令,即可顺利执行。
标签:ogr .com bsp opencv overflow 自定义 err 命令 操作
原文地址:https://www.cnblogs.com/benbencoding798/p/9141439.html