zoukankan      html  css  js  c++  java
  • CMakeLists.txt与OpenCV

    在Linux下安装了两个版本的Opencv,一个2.4.9在默认路径下:

    /usr/local/share/OpenCV/OpenCVConfig.cmake

    一个3.4.9安装在自定义路径下:

    /usr/local/include/opencv3.4.9/share/OpenCV/OpenCVConfig.cmake

    在调用自定义的opencv版本时CMakeLists.txt内容如下:

     1 # cmake needs this line
     2 cmake_minimum_required (VERSION 2.8) 
     3 # Define project name
     4 project(TestOpencv)  
     5 
     6 # Find OpenCV, you may need to set OpenCV_DIR variable
     7 # to the absolute path to the directory containing OpenCVConfig.cmake file
     8 # via the command line or GUI
     9 set(OpenCV_DIR /usr/local/include/opencv3.4.9/share/OpenCV)
    10 find_package(OpenCV 3 REQUIRED)
    11 message(STATUS "Opencv library status: ")
    12 message(STATUS "> version: ${OpenCV_VERSION} ")
    13 message(STATUS "> libraries: ${OpenCV_LIBS}")
    14 message(STATUS "> include: ${OpenCV_INCLUDE_DIRS} ")
    15 
    16 # Add OpenCV headers location to your include paths
    17 include_directories(${OpenCV_INCLUDE_DIRS})
    18 
    19 
    20 # Declare the executable target built from your sources
    21 add_executable(main main.cpp)
    22 
    23 # Link your application with OpenCV libraries
    24 target_link_libraries(main ${OpenCV_LIBS})

    其中line 9 很重要,如果没有set 路径的话会找到默认路径下的opencv 2.4.9,从而不匹配 find_package(OpenCV 3 REQUIRED) 而报错。

    如果只是用opencv2.4.9就不需要line 9,然后 find_package(OpenCV 3 REQUIRED) 改成 find_package(OpenCV 2 REQUIRED) 或  find_package(OpenCV  REQUIRED)

    文件路径结构:

    |--build
    |
    |--CMakeLists.txt
    |
    |--main.cpp
    |
    |--test
      |
      |--1.jpg

    其中build是新建的文件夹。

    main.cpp内容如下:

     1 #include <stdio.h>
     2 #include "opencv2/opencv.hpp"
     3 
     4 int main()
     5 {
     6    cv::Mat image = cv::imread("../test/1.jpg");      
     7     printf("image.col=%d image.raw=%d 
    ", image.cols, image.raws);
     8     
     9     cv::imshow("picture",image);
    10     cv::waitKey(0);
    11     return 0;
    12 
    13 }

    在build目录下执行:

    cmake ..

    生成nakefile文件,接着执行编译命令:

    make

    这样会生成一个可执行程序 main

    执行程序:

    ./main
  • 相关阅读:
    对es6中Promise和async的理解
    js里面的map、filter、forEach、reduce、for in、for of等遍历方法
    浏览器怎么解析一个hmtl文档
    js获取浏览器版本
    js中的浅复制和深复制
    作为一个程序员,如何调试抓取跳转页面前发送的请求
    escape、unescape、encodeURIComponent、decodeURLComponent
    css超过一定长度显示省略号 强制换行
    gojs去除水印
    版本控制系统svn的超基础使用
  • 原文地址:https://www.cnblogs.com/juluwangshier/p/12584675.html
Copyright © 2011-2022 走看看