不管我怎样尝试,#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"
(带有子目录名称),以避免产生歧义。