首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复manjaro中安装的opencv4的“致命错误: opencv2/core.hpp:没有这样的文件或目录”

如何修复manjaro中安装的opencv4的“致命错误: opencv2/core.hpp:没有这样的文件或目录”
EN

Stack Overflow用户
提问于 2019-10-21 07:19:29
回答 4查看 26.1K关注 0票数 13

从本质上讲,我已经能够很好地为python安装openCV,但我也希望能够为C++安装它。我可以使用我的linux发行版的包管理器(pacman for manjaro,它基于arch)来安装它,但是我还没有让下面的程序来测试openCV

代码语言:javascript
复制
#include <iostream>
#include <opencv2/core.hpp>

int main() {
   std::cout << "OpenCV version: " << CV_VERSION << std::endl;
   return 0;
}

我在尝试编译这个程序时得到的错误如下:

代码语言:javascript
复制
cv.cpp:2:10: fatal error: opencv2/core.hpp: No such file or directory
    2 | #include <opencv2/core.hpp>
      |          ^~~~~~~~~~~~~~~~~~
 compilation terminated.

显然,这是一个常见的错误,然而我尝试了许多解决方案,但它们似乎都不起作用。我知道core.hpp在哪里,实际上它在/usr/local/include/opencv4/opencv2/core.hpp。但是,当我将include语句更改为

代码语言:javascript
复制
 #include opencv4/opencv2/core.hpp

我得到以下错误

代码语言:javascript
复制
 In file included from cv.cpp:2:
 /usr/include/opencv4/opencv2/core.hpp:52:10: fatal error: opencv2/core                /cvdef.h: No such file or directory
   52 | #include "opencv2/core/cvdef.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~
 compilation terminated.

这表明所有的头文件路径目录本质上都是错误的。我试着用下面的符号链接解决这个问题,但也不起作用:

代码语言:javascript
复制
$ sudo ln -s /usr/local/include/opencv4/opencv2/ /usr/local/include/opencv2

我还尝试了用以下方式编译:

代码语言:javascript
复制
$ g++ -o cv cv.cpp -I/usr/local/include/opencv4 -Lusr/local/lib -lopencv_core

这也不起作用,给了我同样的错误。作为参考,我之前是这样编译的:

代码语言:javascript
复制
$ g++ cv.cpp -o cv

我也不知道这是否意味着什么,但是

代码语言:javascript
复制
$ pkg-config --libs opencv4

给出了以下结果:

代码语言:javascript
复制
-lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm     -lopencv_bioinspired -lopencv_ccalib -lopencv_cvv -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_video -lopencv_videoio -lopencv_viz -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core 

虽然我不知道这意味着什么,我也不知道这是否对我有任何帮助。我不希望有任何其他间接的解决方案。有什么办法解决这个问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-21 07:27:20

抱歉,伙计们。找到了我自己的答案。对我来说,这是正确的编译方式:

代码语言:javascript
复制
  g++ cv.cpp -o cv -I/usr/include/opencv4
票数 9
EN

Stack Overflow用户

发布于 2021-04-26 22:30:09

如果您运行的是CMake,您还可以要求

代码语言:javascript
复制
find_package (OpenCV 4.0.0 REQUIRED)
include_directories ("/usr/include/opencv4/")
票数 2
EN

Stack Overflow用户

发布于 2020-07-25 03:16:12

尝试使用以下命令进行编译:

代码语言:javascript
复制
FLAGS="$(pkg-config --cflags --libs opencv4)"
g++ cv.cpp -o cv $FLAGS
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58478074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档