【问题标题】:C++ cannot open source file "opencv2/tracking.hpp"C++ 无法打开源文件“opencv2/tracking.hpp”
【发布时间】:2020-05-03 12:21:38
【问题描述】:

我正在尝试使用 OpenCV 多跟踪器,但找不到 tracking.hpp。我已经使用基于these instructionsOpenCV-contrib 模块构建了 OpenCV。现在在 Visual Studio 中,我已经这样做了:

其中$OPENCV_DIR 是用户变量:

我也有;

  • 将路径C:\opencv\opencv4.2.0\opencv-4.2.0\build\install\x64\vc16\lib 添加到Linker -> Gnereal -> Additional Library Directories
  • opencv_world420.lib 添加到Linker -> Input -> Additional Dependencies

现在的问题是没有检测到opencv.hpptracking.hpp

opencv.hpptracking.hpp 都存在于 C:\opencv\opencv4.2.0\opencv-4.2.0\build\install\include\opencv2 中。我应该怎么做才能让程序识别 OpenCV-contrib 模块?

【问题讨论】:

  • 这里不确定,但是如果您从源文件的标题名称中取出opencv2/ 会发生什么?看起来您已经将该目录作为“其他包含目录”的一部分。
  • 你尝试编译了吗?因为您显示的上一张图片中的错误只是关于编辑器设置,而不是关于编译器设置。如果它编译,那么你的文件被正确找到,它只是智能感知或类似的配置错误。
  • 加入@AdrianMole,但我宁愿删除附加包含路径之一中的 opencv2 子路径并完全删除另一个...
  • @Aconcagua 我同意这可能是更好的方法。只是认为编辑 cpp 文件会是一个更快的“测试”,看看这是否真的是问题所在。
  • @Aconcagua 查看答案 - 希望它不会太乱码!

标签: c++ visual-studio opencv include opencv-contrib


【解决方案1】:

注意:这个答案主要是通过结合和扩展我自己和其他人制作的 cmets 形成的:

问题是您指定的“附加包含目录”与#include 行中指定的标头名称之间存在“冲突”,因为您已指定文件夹“opencv2”两次

例如,行:

#include <opencv2/tracking.hpp>

在每个定义的搜索路径中名为opencv2子目录 中查找文件tracking.hpp。在您的情况下,这是在寻找:

OPENCV_DIR\include\opencv2\opencv2\tracking.hpp

…而且那个文件(实际上是文件夹)不存在。

因此,只需将其指定为您的(单个)“附加包含目录:”

OPENCV_DIR\包括

... 然后,当编译器“构造”标头的路径时,它会将/opencv2/tracking.hpp 附加到(每个)指定的搜索目录,并且能够找到:OPENCV_DIR\include + / + @ 987654328@,因为这将评估为:

OPENCV_DIR\include\opencv2\tracking.hpp

【讨论】:

  • 谢谢!将OPENCV_DIR\include 添加到其他包含目录解决了这个问题。
  • 总是乐于提供帮助!请注意,只要您始终在您的#include 行中使用&lt;opencv2/file2.hpp&gt; 和/或&lt;ppencv/file.hpp&gt; 格式,那么您就不需要在附加包含列表中使用这些特定目录。
猜你喜欢
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
相关资源
最近更新 更多