Ubuntu16.04编译安装OpenCV3.20

    xiaoxiao2021-04-18  67

    近期做一个嵌入式项目,可能会涉及到图像处理这方面的内容,因此决定先在Ubuntu上安装一个OpenCV试试水,顺便我这个Linux小白也学学Linux这个系统,在看了网上很多相关教程之后,终于摸索出了安装方法。

    OpenCV官网提供了源码,因此在这里我选择使用较为普遍的 源码+cmake这种安装方式。

    安装前的一些依赖库准备

    sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

    安装

    1、首先从OpenCV官网下载源码的压缩包opencv-3.2.0.zip,然后把它解压

    sudo unzip ~/Downloads/opencv-3.2.0.zip -d ~/

    2、进入opencv文件夹,新建build文件夹编译用

    cd ~/opencv-3.2.0 mkdir build cd build 3、接下来我们需要使用cmake编译整个OpenCV,CMakeFile附带在压缩包中不需要自己去写(谢天谢地),最后那两个点不能省,否则目录不正确,无法完成编译。

    嗯,可以去掉试一试。

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 安装过程中需要它会下载一个ippicv_linux_20151201.tgz,这个能不能成看网速+脸,网速好脸白当然最好,网不好脸黑也不怕,可以百度一下这个包,手动安装,我没手动安就不胡说了,网上有教程可以参考一下。

    4、接下来就是编译,安装。因为安装需要更高的权限,所以说记得加sudo。这个make比较占时间,网上说-j可以多线程加速,不过貌似有的电脑加了-j用不成GG,就没试。

    make sudo make install 网上好多教程到这就结束安装,开始测试了,我当时也是满怀希望的写了HelloWorld.cpp编译了一下,然后各种undefined reference,Linux小白肝了一阵重装也是不行,后来发现其实是链接库的问题。

    sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf' sudo ldconfig 搞定,测试。

    测试

    先运行一下cv库自带的测试程序(opencv-3.2.0/samples)

    cd ~/opencv-3.2.0/samples/cpp/tutorial_code/introduction/display_image ./display_image ~/opencv-3.2.0/samples/data/lena,jpg 没问题的话Lena的照片会显示出来

    嗯,看到她我就莫名开心,因为至少OpenCV应该是可以用了,然后我们再来写一个自己的程序试试。

    #include <opencv2/core/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> #include <string> using namespace std; using namespace cv; int main(int argc, char **argv) { // 读取图片 Mat img = imread(argv[1]) // 创建一个窗口 namedWindow("display window", WINDOW_AUTOSIZE); // 在窗口里显示该图片 imshow("display window", img); // 等待键盘输入 waitKey(0); return 0; } 存到CVTEST.cpp里,我们依旧使用cmake编译。因为我真的是一个Windows下长大的Linux小白,写CMakeLists.txt也折腾我了一阵,最开始仿照网上的CMakeLists改了一个

    cmake_minimum_required(VERSION 2.8) project( CVTEST ) find_package( OpenCV REQUIRED ) add_executable( CVTEST CVTEST.cpp ) target_link_libraries( CVTEST ${OpenCV_LIBS} )

    存好然后编译

    cmake . make

    但怎奈脸太黑,make完又是各种undefined reference,链接又炸了,很无奈(哭晕在厕所)。之前我们能看到Lena小姐姐,说明我们OpenCV大体上安装应该没问题,所以说出问题应该在CMakeLists上,于是我参考了一下sample里面的CMakeLists,发现了这么一句:

    ocv_target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_CPP_SAMPLES_REQUIRED_DEPS}) 哎?OPENCV_LINKER_LIBS不就是我们需要的链接库嘛,,于是在自己的CMakeLists里加上OPENCV_LINKER_LIBS

    cmake_minimum_required(VERSION 2.8) project( CVTEST ) find_package( OpenCV REQUIRED ) add_executable( CVTEST CVTEST.cpp ) target_link_libraries( CVTEST ${OpenCV_LIBS} ${OPENCV_LINKER_LIBS} ) 然后再编译

    cmake . make 直接过,把我们的Lena小姐姐照片或者其他什么照片复制过去然后运行,应该可以看到照片,至此我们的安装结束。

    总之OpenCV3.2就这么稀里糊涂地装过来了,中间还有好多不解的地方留待以后慢慢研究。

    转载请注明原文地址: https://ju.6miu.com/read-675663.html

    最新回复(0)