【问题标题】:Getting OpenCV headers to work correctly on install in Linux让 OpenCV 标头在 Linux 中安装时正常工作
【发布时间】:2020-09-16 01:04:36
【问题描述】:

我在 Ubuntu Linux 上安装了 OpenCV。在任何示例中,标题都是:

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>

当我使用这些包含编译时,我得到了错误:

fatal error: opencv2/imgcodecs.hpp: No such file or directory

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>

我可以找到 OpenCV 所在的位置

pkg-config --cflags --libs opencv

输出如下:

 "Package opencv was not found"

当我尝试pkg-config --cflags --libs opencv2

我明白了:

"Package opencv2 was not found"

只有当我使用pkg-config --cflags --libs opencv4 时,我才能获得路径:

-I/usr/local/include/opencv4/opencv2 

所以我认为通过将包含更改为:

#include <opencv4/imgcodecs.hpp>
#include <opencv4/highgui.hpp>

它会起作用的。但我明白了:

fatal error: opencv4/imgcodecs.hpp: No such file or directory

#include <opencv4/imgcodecs.hpp>

所以当我尝试完整路径时:

#include <opencv4/opencv2/imgcodecs.hpp>

我明白了:

imgcodecs.hpp:46:10: fatal error: opencv2/core.hpp: No such file or directory

#include "opencv2/core.hpp"

当然在有问题的hpp 文件中是:

#include "opencv2/core.hpp"

有没有简单的方法来解决这一切?

【问题讨论】:

  • 最简单的方法是使用像柯南这样的包管理器
  • 我正在使用 makefile 并尝试使用 Cmake 获得相同的结果,现在疯狂的部分是我在另一段不是我编写的代码上有一个 make 文件,可与 #ifdef 一起使用,我可以分享那也是
  • 我更喜欢包管理器进行开发。使用系统包管理版本很困难。柯南下载确切的版本及其所有依赖项并设置所有必要的路径。如果你想简单地使用柯南和 CMake。

标签: linux opencv g++ c-preprocessor


【解决方案1】:

我最近确实遇到了这个问题。问题是,当您构建 OpenCV 时,它会将头文件放在 /usr/local/include/opencv4/ 中,然后在其下方您将看到 opencv2/opencv.hpp 以及您引用的所有其他文件。要解决您的问题,您需要在 bash 中运行:

sudo ln -s /usr/local/include/opencv4/opencv2 /usr/local/include/opencv2

这为我解决了问题,如果它对您有用,请务必将其标记为答案。

【讨论】:

  • 这应该是正确的答案。这也可以通过在从源代码构建 openCV 之前更改 CMake 的构建设置来解决。
猜你喜欢
  • 2016-05-19
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多