【问题标题】:fatal error: opencv2/opencv_modules.hpp: No such file or directory #include "opencv2/opencv_modules.hpp"致命错误:opencv2/opencv_modules.hpp:没有这样的文件或目录#include“opencv2/opencv_modules.hpp”
【发布时间】:2020-12-06 20:38:06
【问题描述】:

大家好,我正在尝试使用从源代码构建的 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

【问题讨论】:

  • 你需要 /usr/local/include/opencv4 在你的包含目录中而不是 /usr/local/include/opencv4/opencv2
  • 猜测一下,您的路径不正确。试试这个include_directories("/usr/local/include/")。你不应该在你的包含路径和包含指令中都有 opencv4/opencv2 。 include 指令从包含路径停止的地方开始。
  • @john 我认为错误实际上是在opencv4/opencv2/opencv.hpp 中生成的,即使它们位于同一目录中,也无法找到"opencv_modules"。我也尝试了你的建议,但它没有用,但我认为它实际上不会有所作为。虽然我可能错了
  • 非常感谢@drescherjm,它运行良好...
  • 对我有用的是:sudo cp -r /usr/local/include/opencv4/opencv2 /usr/include/

标签: c++ opencv opencv4


【解决方案1】:

解决方案是只包含直到/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})

【讨论】:

  • 这确实是一个更好更合适的CMake解决方案。
  • 感谢您的回答!这正是我一直在寻找的几个小时......
【解决方案2】:

#include

应该是这样的。

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

【讨论】:

  • 请在发布答案或问题时使用 StackOverflow 编辑器中可用的正确代码格式选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2019-07-21
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多