我正在用cmake编译opencv程序。
代码如下:
显示图像.cpp:

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
    if ( argc != 2 )
    {
        printf("usage: DisplayImage.out <Image_Path>\n");
        return -1;
    }

    Mat image;
    image = imread( argv[1], 1 );

    if ( !image.data )
    {
        printf("No image data \n");
        return -1;
    }
    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);

    waitKey(0);

    return 0;
}

CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)

project( DisplayImage )

set(OpenCV_DIR /home/lmk/opencv-3.1.0/release)

include_directories( ${OpenCV_INCLUDE_DIRS} )

add_executable( DisplayImage DisplayImage.cpp )

target_link_libraries( DisplayImage ${OpenCV_LIBS} )

我把DisplayImage.cpp和CMakeLists.txt放在我个人主页文件夹中名为test的文件夹中,即/home/lmk/test/
然后我使用命令行:
lmk@lmk虚拟机:~/test$mkdir build
lmk@lmk虚拟机:~/test$cd build
lmk@lmk虚拟机:~/test/build$cmake。。
给了我:
--C编译器标识是GNU5.3.0
--CXX编译器标识是GNU 5.3.0
--检查工作的C编译器/usr/bin/C C
--检查工作的C编译器:/usr/bin/C C--works
--检测C编译器ABI信息
--检测C编译器ABI info-done
--检查CXX编译器是否正常工作/usr/bin/c++
--检查CXX编译器是否正常工作/usr/bin/c++--works
--正在检测CXX编译器ABI信息
--检测CXX编译器ABI信息-完成
--配置完成
--生成完成
--生成文件已写入/home/lmk/test/Build
但当我使用:
目标显示图像的扫描依赖关系
[100%]构建CXX对象CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o
/home/lmk/test/DisplayImage.cpp:2:30:致命错误:opencv2/opencv.hpp:没有这样的文件或目录
编译终止。
make[2]:*[CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o]错误1
make[1]:*[CMakeFiles/DisplayImage.dir/all]错误2
make:**[all]错误1
你知道为什么吗?
我在VM的ubuntu 14.04终端上使用opencv 3.1.0和cmake 2.8.12.2!

最佳答案

为什么不使用“典型”方式,使用find_package()
尝试重复this教程中的步骤,并报告正在发生的事情。

10-08 13:12