致命错误:opencv2 / opencv_modules.hpp:没有这样的文件或目录#include“ opencv2 / opencv_modules.hpp”

问题描述

您好,我正在尝试使用从源代码构建的opencv-c ++ API(版本4.4.0)。它安装在/ usr / local /中,我只是在尝试使用以下代码加载和显示图像-

#include <iostream>
#include <opencv4/opencv2/opencv.hpp>
#include <opencv4/opencv2/core.hpp>
#include <opencv4/opencv2/imgcodecs.hpp>
#include <opencv4/opencv2/highgui.hpp>
#include <opencv4/opencv2/core/cuda.hpp>

using namespace cv;

int main()
{
    std::string image_path = "13.jpg";
    cv::Mat img = cv::imreadmulti(image_path,IMREAD_COLOR);
    if(img.empty())
    {
        std::cout<<"Could NOT READ IMAGE"<<std::endl;
        return 1;
    }
    imshow("display Window",img);
    return 0;
}

当我编译时,在编译过程中会引发以下错误-

In file included from /CLionProjects/opencvTest/main.cpp:2:
/usr/local/include/opencv4/opencv2/opencv.hpp:48:10: Fatal error: opencv2/opencv_modules.hpp: No such file or directory
 #include "opencv2/opencv_modules.hpp"

我的Cmake如下-

cmake_minimum_required(VERSION 3.15)
project(opencvTest)

set(CMAKE_CXX_STANDARD 17)
include_directories("/usr/local/include/opencv4/opencv2/")
add_executable(opencvTest main.cpp)
target_link_libraries(opencvTest PUBLIC "/usr/local/lib/")

我不知道我在这里做错了什么。这可能是一个菜鸟问题,但是我才刚开始在C ++中使用opencv

解决方法

解决方案是仅将include_directories路径包含到/usr/local/opencv4,并且效果很好。

但是,我认为最好的方法是使用find_package函数。我将Cmake更新为以下内容,并在构建过程中负责链接。

cmake_minimum_required(VERSION 3.15)
project(opencvTest)

set(CMAKE_CXX_STANDARD 17)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(opencvTest main.cpp)
target_link_libraries(opencvTest ${OpenCV_LIBS})
,

#include

应该是这样的。

相对而言,标题搜索路径应该是: /usr/local/include/opencv4