C++ Cmake OpenCV
Posted
技术标签:
【中文标题】C++ Cmake OpenCV【英文标题】: 【发布时间】:2020-10-15 23:13:47 【问题描述】:我第一次尝试运行 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.
谁能帮我理解发生了什么? 这与 makefile、opencv 或 cmake 有关吗?
谢谢
【问题讨论】:
如果你今天早些时候做了这个问题中所说的,你需要设置包含目录:https://***.com/questions/64379070/cmake-issues-could-not-find-a-package-configuration-file-provided-by-opencv#comment113843452_64379070 【参考方案1】:OpenCV 附带一个 CMake 配置文件,这应该是包含它的首选机制。例如,您可以使用现代 CMake 基于目标的 CMake 方法包含 OpenCV,如下所示,例如让我们使用来自 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
)
【讨论】:
以上是关于C++ Cmake OpenCV的主要内容,如果未能解决你的问题,请参考以下文章