不管我怎样尝试,#include <opencv>都没有成功。 [编辑:我也尝试过#include <opencv2>#include <opencv4>,但是没有区别]。
就上下文而言,我在Ubuntu 20.04上使用Sublime Text 3,系统上已安装了最新版本的OpenCV(位于/usr/local/include/opencv4/opencv2),并且我已经尝试了六种不同的cpp构建系统,包括默认的构建系统。
不管我尝试什么以及如何摆弄文件,我总是会遇到相同的错误:

/home/user/Projects/Mind/CScript/Script.cpp:5:10: fatal error: opencv: No such file or directory
    5 | #include <opencv>
      |          ^~~~~~~~
compilation terminated.
[Finished in 0.1s with exit code 1]
[shell_cmd: g++ "/home/user/Projects/Mind/CScript/Script.cpp" -o "/home/user/Projects/Mind/CScript/Script" && "/home/user/Projects/Mind/CScript/Script"]
[dir: /home/user/Projects/Mind/CScript]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]
我什至尝试将整个opencv文件夹复制到文件路径中,但是完全没有变化。
编辑:有效的解决方案是将opencv2文件夹从/usr/local/include/opencv4/粘贴到/usr/local/include/。显然,该附加文件夹不应该存在。

最佳答案

#include引用文件,而不是文件夹。在包含路径列表中查找指定的文件。-I /usr/local/include/opencv4/opencv2将该路径添加到包含路径列表中。但是,该路径对我来说似乎很破旧-OpenCV在opencv/中具有旧版API,在opencv2/中具有更新的API,但是无论哪种情况,路径中都不应包含opencv4/。 (已与我的APT再次确认。)您确定正确进行了OpenCV设置吗?
实际 header 的名称为opencv2/opencv.hpp(请注意结尾处的.hpp;通常,只有标准库的包含文件才不含.hpp,到目前为止,我见过的所有第三方库都使用.hpp扩展名)。
最佳实践是保留包含路径,并在源代码中写入#include "opencv2/opencv.hpp"(带有子目录名称),以避免产生歧义。

09-30 14:48
查看更多