【问题标题】:Why does my g++ compiler not find the right OpenCV version?为什么我的 g++ 编译器找不到正确的 OpenCV 版本?
【发布时间】:2021-04-14 15:08:09
【问题描述】:

我正在尝试使用此命令编译程序:

g++ -std=c++11 -I"/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/" -I"/usr/include/python2.7" stl.cpp -o stl -ldl -lpthread -lrt -lopencv_core -lpython2.7

但是,我不断收到此错误:

fatal error: 'opencv2/core.hpp' file not found

我更改了我的 -I 包含路径以指向正确安装了 opencv2/core.hpp 的我的 OpenCV 版本。我错过了什么吗?这种方法适用于其他编译...

编辑

尝试了以下建议后,我仍然没有运气。

我添加了如下的 pkg-config 建议:

g++ -std=c++11 -I"/usr/include/python2.7" stl.cpp -o stl -ldl -lpthread -lrt -lopencv_core -lpython2.7  `pkg-config --cflags --libs opencv4` 

但我仍然找不到"opencv2/core.hpp"。这很奇怪,因为当我运行时:

pkg-config --cflags --libs opencv4

我明白了:

-I/usr/local/Cellar/opencv/4.5.0_5/include/opencv4 -L/usr/local/Cellar/opencv/4.5.0_5/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -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_videoio -lopencv_viz -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core 这让我觉得它应该可以工作。

我还尝试将#include opencv2/core.hpp 更改为#include core.hpp。这让我更接近,但后来我在实际的 opencv2/core.hpp 文件中收到一个错误,说它再也找不到包含了。我想我不想开始编辑原始 opencv 库中的包含路径。

【问题讨论】:

  • 您想查看 pkg-config 工具。例如见stackoverflow.com/q/15113753/451600
  • 尝试通过命令编译 /* g++ -std=c++11 stl.cpp -o output ` pkg-config --cflags --libs opencv4` */ if u re using hte version低于 4 的 opencv 比只用 opencv 替换 opencv4

标签: c++ c opencv g++


【解决方案1】:

看起来您的包含路径有点错误。 使用您的-I 路径,您正在查看...opencv4/opencv2/。当您包含core.hpp 时,您将包含它(大概):

#include "opencv2/core.hpp"

所以编译器基本上是在...opencv4/opencv2/opencv2/core.hpp处寻找core.hpp

尝试改用...include/opencv4/。或者像这样包含:

#include "core.hpp"

【讨论】:

  • 最好使用``pkg-config --cflags --libs opencv4``作为gcc标志
  • 我尝试了这两个选项,但找不到解决方案,请参阅编辑。谢谢。
  • 尝试不使用-lopencv_core
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
相关资源
最近更新 更多