web-dev-qa-db-ja.com

致命的なエラー: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/")
 _

私はここで何が悪いのかわかりません。これはNoobの質問かもしれませんが、私はC++でOpenCVを使い始めたばかりです。

2
Atharva Dubey

解決策は、/usr/local/opencv4までinclude_directoriesパスを含めることで、完全に機能します。

しかし、私が信じる最善の方法は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})
2
Atharva Dubey