簡體   English   中英

cmake錯誤:opencv2/opencv.hpp:opencv2/opencv.hpp:沒有這樣的文件或目錄

[英]cmake error : opencv2/opencv.hpp:opencv2/opencv.hpp:No such file or directory

我正在用 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-virtual-machine:~/test$ mkdir build
lmk@lmk-virtual-machine:~/test$ cd build
lmk@lmk-virtual-machine:~/test/build$ cmake ..

這給了我:

-- C 編譯器標識為 GNU 5.3.0
-- CXX 編譯器標識為 GNU 5.3.0
-- 檢查工作的 C 編譯器:/usr/bin/cc
-- 檢查工作的 C 編譯器:/usr/bin/cc -- 工作
-- 檢測 C 編譯器 ABI 信息
-- 檢測 C 編譯器 ABI 信息 - 完成
-- 檢查工作的 CXX 編譯器:/usr/bin/c++
-- 檢查工作的 CXX 編譯器:/usr/bin/c++ -- 工作
-- 檢測 CXX 編譯器 ABI 信息
-- 檢測 CXX 編譯器 ABI 信息 - 完成
-- 配置完成
-- 生成完成
-- 構建文件已寫入:/home/lmk/test/build

但是當我使用:

掃描目標 DisplayImage 的依賴關系
[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: *** [全部] 錯誤 1

你知道為什么嗎? 我在虛擬機的 ubuntu 14.04 終端中使用 opencv 3.1.0 和 cmake 2.8.12.2!

為什么不使用“典型”方式,使用find_package()

嘗試重復教程中的步驟,並報告正在發生的事情。

這個問題有點老了,所以我不得不從源代碼構建 OpenCV 2:

$ git clone --depth 1 --branch 2.4.13.7 https://github.com/opencv/opencv.git
$ cmake -S opencv -B opencv-build -DCMAKE_BUILD_TYPE=Release -DWITH_CUDA=NO -DCMAKE_INSTALL_PREFIX=$PWD/opencv-install
$ cmake --build opencv-build
$ cmake --install opencv-build

然后我為您的代碼編寫了以下 CMakeLists.txt:

cmake_minimum_required(VERSION 3.21)
project(test)

find_package(OpenCV 2 REQUIRED)

add_executable(DisplayImage DisplayImage.cpp)
target_link_libraries(DisplayImage PRIVATE ${OpenCV_LIBS})

為了構建它,我簡單地運行了:

$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DOpenCV_ROOT=$PWD/opencv-install
...
$ cmake --build build/ --verbose
[1/2] /usr/bin/c++  -I/path/to/opencv-install/include/opencv -I/path/to/opencv-install/include -O3 -DNDEBUG -MD -MT CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o -MF CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o.d -o CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o -c /path/to/DisplayImage.cpp
[2/2] : && /usr/bin/c++ -O3 -DNDEBUG  CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o -o DisplayImage  -Wl,-rpath,/path/to/opencv-install/lib  ../opencv-install/lib/libopencv_videostab.so.2.4.13  ../opencv-install/lib/libopencv_ts.a  ../opencv-install/lib/libopencv_superres.so.2.4.13  ../opencv-install/lib/libopencv_stitching.so.2.4.13  ../opencv-install/lib/libopencv_contrib.so.2.4.13  -ldl  -lm  -lpthread  -lrt  -ldl  -lm  -lpthread  -lrt  ../opencv-install/lib/libopencv_nonfree.so.2.4.13  ../opencv-install/lib/libopencv_ocl.so.2.4.13  ../opencv-install/lib/libopencv_gpu.so.2.4.13  ../opencv-install/lib/libopencv_photo.so.2.4.13  ../opencv-install/lib/libopencv_objdetect.so.2.4.13  ../opencv-install/lib/libopencv_legacy.so.2.4.13  ../opencv-install/lib/libopencv_video.so.2.4.13  ../opencv-install/lib/libopencv_ml.so.2.4.13  ../opencv-install/lib/libopencv_calib3d.so.2.4.13  ../opencv-install/lib/libopencv_features2d.so.2.4.13  ../opencv-install/lib/libopencv_highgui.so.2.4.13  ../opencv-install/lib/libopencv_imgproc.so.2.4.13  ../opencv-install/lib/libopencv_flann.so.2.4.13  ../opencv-install/lib/libopencv_core.so.2.4.13 && :

如果您在標准系統位置安裝了 OpenCV,則-DOpenCV_ROOT=$PWD/opencv-install

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM