zoukankan      html  css  js  c++  java
  • openCV3.4.1 ubuntu16

    • GCC 4.4.x or later

    • CMake 2.6 or higher

    • Git

    • GTK+2.x or higher, including headers (libgtk2.0-dev) # 控制opencv GUI

    • pkg-config

    • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)

    • ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev

    • [optional] libtbb2 libtbb-dev

    • [optional] libdc1394 2.x

    • [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev

    $ 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 # 处理图像所需的包
    $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
    $ sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
    $ sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
    $ sudo apt-get install ffmpeg 
    

    自己安装得依赖包

    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
    

    出现类似问题及解决方法:
    问题: /sbin/ldconfig.real: /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.6 is not a symbol link

    sudo ldconfig -v
    找到这一行错误:libcudnn.so.6 -> libcudnn.so.6.0.21

    ubuntu下面ctrl+shift+F可以查找命令窗中得显示内容

    或者用命令:

    dpkg -S /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.6

    解决问题代码:

    sudo ln -sf /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.4.0.21 /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.6

    下载地址: https://opencv.org/releases.html

    进入下载好得解压文件夹当中,创建一个新的文件夹:

    mkdir build
    cd build

    cmake -D:= 添加变量及值到CMakeCache.txt,注意这个后面得两个点不能省略

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

    编译+安装:

    sudo make #make -j4表示四核并行安装
    sudo make install

    将opencv的库添加到本地路径:

    sudo gedit /etc/ld.so.conf.d/opencv.conf
    文件中加入内容: /usr/local/lib
    sudo ldconfig

    法二:

    sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
    sudo ldconfig

    配置bash文件

    sudo gedit /etc/bash.bashrc
    末尾配置如下:
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH
    生效:
    source /etc/bash.bashrc
    更新:
    sudo updatedb

    安装完成测试:
    找到下载好的解压包的opencv文件,我的位置是在 opencv-3.4.1/samples/cpp/example_cmake,
    在这个文件目录下面有make文件,所以执行

    cmake .
    make
    ./opencv_example
    即可看到打开了摄像头,在左上角有一个hello opencv ,表示配置成功

    法二:
    在这里,要在下面打开的这个文件夹中添加CMakeLists.txt和Makefile文件,这里对其做如下修改:(以下的说明都是根据经验得来,没有经过严格求证,如有错误,麻烦指正,谢谢)
    CMakeLists.txt

    # cmake needs this line
    cmake_minimum_required(VERSION 2.8)
    
    # Define project name
    project(opencv_example_project)
    
    # Find OpenCV, you may need to set OpenCV_DIR variable
    # to the absolute path to the directory containing OpenCVConfig.cmake file
    # via the command line or GUI
    find_package(OpenCV REQUIRED)
    
    # If the package has been found, several variables will
    # be set, you can find the full list with descriptions
    # in the OpenCVConfig.cmake file.
    # Print some message showing some of them
    message(STATUS "OpenCV library status:")
    message(STATUS "    version: ${OpenCV_VERSION}")
    message(STATUS "    libraries: ${OpenCV_LIBS}")
    message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
    
    if(CMAKE_VERSION VERSION_LESS "2.8.11")
      # Add OpenCV headers location to your include paths
      include_directories(${OpenCV_INCLUDE_DIRS})
    endif()
    
    # Declare the executable target built from your sources
    add_executable(display_image display_image.cpp) #第一个是为自己生成的目标执行文件命名 第二个变量是需要make的cpp的名字
    
    # Link your application with OpenCV libraries
    target_link_libraries(display_image ${OpenCV_LIBS}) #替换成自己的执行文件的名称就可以了,与上面的add_executable的第一个名称相同
    

    Makefile(在这个文件中相应修改的未知就是all:执行文件的名字,下一行:执行文件名字:编译文件的名字.o, clean: 编译额外那件的名字.o 执行文件名字

    CXX ?= g++
    
    CXXFLAGS += -c -Wall $(shell pkg-config --cflags opencv)
    LDFLAGS += $(shell pkg-config --libs --static opencv)
    
    all: display_image
    
    display_image: display_image.o; $(CXX) $< -o $@ $(LDFLAGS)
    
    %.o: %.cpp; $(CXX) $< -o $@ $(CXXFLAGS)
    
    clean: ; rm -f display_image.o display_image
    

    cd ~/opencv-3.4.0/samples/cpp/tutorial_code/introduction/display_image
    cmake .
    make
    ./display_image ~/opencv-3.4.0/samples/data/lena.jpg

    参考文献:
    https://blog.csdn.net/yudiemiaomiao/article/details/72780790
    https://blog.csdn.net/qq_24626557/article/details/70173399
    https://blog.csdn.net/langb2014/article/details/54376716
    https://blog.csdn.net/cocoaqin/article/details/78163171

  • 相关阅读:
    Flask 中的路由系统
    Flask 中内置的 Session
    Flask中的模板语言jinja2
    Flask 中的 5种返回值
    Redis快速入门
    动态实现前后台分页、翻页按钮、上一页、下一页、首页、末页
    bus.js非父子组件之间通讯
    vue中父子组件之间相互传值
    js实现加减乘除
    禁用微信分享
  • 原文地址:https://www.cnblogs.com/luxuriance-lily/p/8999409.html
Copyright © 2011-2022 走看看