Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 致命错误:opencv2/opencv_modules.hpp:没有这样的文件或目录“include”;opencv2/opencv_modules.hpp“;_C++_Opencv_Opencv4 - Fatal编程技术网

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

C++ 致命错误:opencv2/opencv_modules.hpp:没有这样的文件或目录“include”;opencv2/opencv_modules.hpp“;,c++,opencv,opencv4,C++,Opencv,Opencv4,大家好,我正在尝试使用我从源代码构建的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 <

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

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/opencv4
,它工作得非常好

但是,我认为最好的方法是使用
find\u包
功能。我将我的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})
#包括

应该是这样的

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

您需要
/usr/local/include/opencv4
才能在include目录中,而不是
/usr/local/include/opencv4/opencv2
猜测一下,您的路径不正确。试试这个
include\u目录(“/usr/local/include/”)
。您不应该在include路径和include指令中都包含opencv4/opencv2。include指令从include路径停止的地方开始。@john我认为错误实际上是在
opencv4/opencv2/opencv.hpp
中生成的,在那里它无法找到
“opencv\u模块”
,即使它们在同一目录中。我也尝试了你的建议,但没有奏效,但我认为这实际上不会有什么不同。。虽然我可能错了,但非常感谢@drescherjm,它工作得非常完美……对我有效的是:sudo cp-r/usr/local/include/opencv4/opencv2/usr/include/这确实是一个更好、更合适的
CMake
解决方案。请在发布答案或问题时使用StackOverflow编辑器中可用的正确代码格式选项。
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})