C++ Cmake OpenCV



我第一次尝试运行C++代码。文档建议下载CMake来编译同样使用OpenCV的项目。现在,我跑了$cmake。在项目目录内的终端中,我运行$make,我得到了100%的构建。当我运行$g++Fotokite.cpp时,我得到了这个错误:

In file included from Fotokite.cpp:8:
./Fotokite.hpp:11:10: fatal error: 'opencv2/core.hpp' file not found
#include "opencv2/core.hpp"
^~~~~~~~~~~~~~~~~~
1 error generated.

有人能帮我了解发生了什么事吗?这与makefiles、opencv或cmake有关吗?

谢谢

OpenCV附带一个CMake配置文件,这应该是包含它的首选机制https://docs.opencv.org/master/db/df5/tutorial_linux_gcc_cmake.html

#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;
}

现在,为了包含OpenCV,我们可以使用find_package。下面的示例CMake文件将使用标准安装位置(为了测试目的,根据OpenCV 4.5构建(。如果您使用OpenCV的本地版本进行构建,则可以将PATH选项传递给具有本地版本的安装根目录的find_package。要包含OpenCV,您可以在安装步骤中使用target_link_libraries链接OpenCV CMake配置文件生成的目标,这将正确管理目标的所有可传递依赖项(包括目录、编译器定义、编译器标志、链接库和此目标的可传递依赖性的等效字段(。

cmake_minimum_required(VERSION 3.18)
project( UseOpenCV )
find_package( OpenCV REQUIRED)
add_executable( UseOpenCV main.cpp )
target_link_libraries( UseOpenCV
PRIVATE
opencv_highgui
)

最新更新