opencv(c++) opensuse linux 安装记录

opencv(c++) opensuse linux 安装记录

官网教程地址

https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html

  1. 解决依赖

    1. cmake
    2. g++
    3. wget
    4. unzip
    5. 官网只说了上面这几个依赖, 如果有依赖没解决, 可根据自己的系统使用搜索引擎
  2. 下载源码

    wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip
    wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/master.zip
    
  3. 解压

    unzip opencv.zip
    unzip opencv_contrib.zip
    
  4. 创建构建目录并进入

    mkdir -p build && cd build
    
  5. 配置

    cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-master/modules ../opencv-master
    
  6. 构建

    cmake --build .
    

    **注意:**在这个过程中需要从网上下载两个包, 但是呢, 在线下载网速实在感人。下面说一下解决方案:

    ​ 这两个包分别是:

     		1. face_landmark_model.dat 下载地址: https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat
      		2. ippicv_2020_lnx_intel64_20191018_general.tgz   下载地址:https://raw.githubusercontent.com/opencv/opencv_3rdparty/ippicv/master_20191018/ippicv/ippicv_2020_lnx_intel64_20191018_general.tgz
    

    这两个地址可以从它的构建文件中找到, 分别是CMakeLists.txt和ippicv.cmake, 找到相应的位置, 把链接拼接起来。

    下载之后, 把在线下载地址改为离线地址, 例如:

    CMakeLists.txt

    set(the_description "Face recognition etc")
    ocv_define_module(face opencv_core
        opencv_imgproc
        opencv_objdetect
        opencv_calib3d   # estimateAffinePartial2D() (trainFacemark)
        opencv_photo     # seamlessClone() (face_swap sample)
        WRAP python java objc
    )
    # NOTE: objdetect module is needed for one of the samples
    
    set(__commit_hash "8afa57abc8229d611c4937165d20e2a2d9fc5a12")
    set(__file_hash "7505c44ca4eb54b4ab1e4777cb96ac05")
    ocv_download(
        FILENAME face_landmark_model.dat
        HASH ${__file_hash}
        URL
          "${OPENCV_FACE_ALIGNMENT_URL}"
          "$ENV{OPENCV_FACE_ALIGNMENT_URL}"
          # "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/" 
          # 改为下面的路径, 实际路径根据你自己来。
          "file:///home/coffee/git/opencv_contrib-master/modules/face/face_landmark_model.dat"
        DESTINATION_DIR "${CMAKE_BINARY_DIR}/${OPENCV_TEST_DATA_INSTALL_PATH}/cv/face/"
        ID "data"
        RELATIVE_URL
        STATUS res
    )
    if(NOT res)
      message(WARNING "Face: Can't get model file for face alignment.")
    endif()
    

    ippicv.cmake

    function(download_ippicv root_var)
      set(${root_var} "" PARENT_SCOPE)
    
      # Commit SHA in the opencv_3rdparty repo
      set(IPPICV_COMMIT "a56b6ac6f030c312b2dce17430eef13aed9af274")
      # Define actual ICV versions
      if(APPLE)
        set(OPENCV_ICV_PLATFORM "macosx")
        set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_mac")
        set(OPENCV_ICV_NAME "ippicv_2020_mac_intel64_20191018_general.tgz")
        set(OPENCV_ICV_HASH "1c3d675c2a2395d094d523024896e01b")
      elseif((UNIX AND NOT ANDROID) OR (UNIX AND ANDROID_ABI MATCHES "x86"))
        set(OPENCV_ICV_PLATFORM "linux")
        set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_lnx")
        if(X86_64)
          set(OPENCV_ICV_NAME "ippicv_2020_lnx_intel64_20191018_general.tgz")
          set(OPENCV_ICV_HASH "7421de0095c7a39162ae13a6098782f9")
        else()
          set(OPENCV_ICV_NAME "ippicv_2020_lnx_ia32_20191018_general.tgz")
          set(OPENCV_ICV_HASH "ad189a940fb60eb71f291321322fe3e8")
        endif()
      elseif(WIN32 AND NOT ARM)
        set(OPENCV_ICV_PLATFORM "windows")
        set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_win")
        if(X86_64)
          set(OPENCV_ICV_NAME "ippicv_2020_win_intel64_20191018_general.zip")
          set(OPENCV_ICV_HASH "879741a7946b814455eee6c6ffde2984")
        else()
          set(OPENCV_ICV_NAME "ippicv_2020_win_ia32_20191018_general.zip")
          set(OPENCV_ICV_HASH "cd39bdf0c2e1cac9a61101dad7a2413e")
        endif()
      else()
        return()
      endif()
    
      set(THE_ROOT "${OpenCV_BINARY_DIR}/3rdparty/ippicv")
      ocv_download(FILENAME ${OPENCV_ICV_NAME}
                   HASH ${OPENCV_ICV_HASH}
                   URL
                     "${OPENCV_IPPICV_URL}"
                     "$ENV{OPENCV_IPPICV_URL}"
                     "file:///home/coffee/git/opencv-master/3rdparty/ippicv/ippicv_2020_lnx_intel64_20191018_general.tgz" # 改为自己的路径
                   DESTINATION_DIR "${THE_ROOT}"
                   ID IPPICV
                   STATUS res
                   UNPACK RELATIVE_URL)
    
      if(res)
        set(${root_var} "${THE_ROOT}/${OPENCV_ICV_PACKAGE_SUBDIR}" PARENT_SCOPE)
      endif()
    endfunction(
    
  7. 解决完上面的问题就可以开始下面的步骤了

    # 编译安装一气呵成, 注意-j9选项
    sudo make -j9 && make install
    
  8. 对于CLion来说需要配置CMakeLists.txt文件

    # 指定opencv的头文件
    include_directories(/usr/local/include/opencv4)
    # c++11
    set(CMAKE_CXX_STANDARD 11)
    # 链接库
    find_package( OpenCV REQUIRED )
    include_directories( ${OpenCV_INCLUDE_DIRS} )
    #执行项目
    add_executable(test  test.cpp )
    target_link_libraries( test ${OpenCV_LIBS} )
    
  9. 示例

    #include <opencv2/opencv.hpp>
    #include <iostream>
    using namespace std;
    using namespace cv;
    const String window_name = "Capture - face detection";
    int main() {
        // 实例化 
        VideoCapture camera(0);
        int i = 0;
        while (true)
        {
            Mat frame;
            camera >> frame;
            
            // 这部分将int类型转换为string
            stringstream  ss;
            ss << ++i;
            string str = ss.str();
            //显示
            imshow(window_name, frame);
            //构建保存路径
            string save_path = "/home/coffee/shape/C++/test/image/" + str + ".png";
            cout << save_path << endl;
            imwrite(save_path, frame);
            if (waitKey(33) == 27) break;   // ESC 键退出
    
        }
    
        // 释放
        camera.release();
        destroyWindow("camera");
        return 0;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值