【问题标题】:Unable to locate OpenCV header, but pkg-config contains path无法找到 OpenCV 标头,但 pkg-config 包含路径
【发布时间】:2021-08-29 19:41:50
【问题描述】:

为了在我的 Mac 上安装 OpenCV,我选择使用brew install opencv,而不是按照 Mac 安装教程中的说明从源代码构建。 Homebrew 的安装路径似乎是 /opt/homebrew,而我下载的所有包含的包似乎都包含在该目录的 include 中。

我写了一个示例程序程序来测试安装:

#include <opencv4/opencv2/imgcodecs.hpp>
#include <opencv4/opencv2/highgui.hpp>
#include <opencv4/opencv2/imgproc.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main() {
    VideoCapture cap(0);
    Mat img;
    
    while (1) {
        cap.read(img);
        imshow("Image", img);
        
        if (waitKey(1) == 27) {
            break;
        }
    }

    return 0;
}

为了编译它,我运行了:

g++ video.cpp `pkg-config --cflags --libs opencv4`

返回:

fatal error: 'opencv4/opencv2/imgcodecs.hpp' file not found

我跑pkg-config --cflags --libs opencv4检查是否设置正确,返回如下:

-I/opt/homebrew/Cellar/opencv/4.5.2_4/include/opencv4 -L/opt/homebrew/Cellar/opencv/4.5.2_4/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -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_highgui -lopencv_datasets -lopencv_text -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_wechat_qrcode -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_dnn -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

我认为这意味着 OpenCV 的路径是为在编译期间链接包而设置的,所以我想知道为什么链接器找不到它。另外,我的最终目标是编写一个涉及 pcl 的程序,并且我还通过 brew 安装了 pcl。由于它也包含在 opt/homebrew/ 中,所以在制作 cake 文件时是否必须在 /usr/ 之外创建对其路径的特定引用?谢谢!

【问题讨论】:

  • 我认为opencv4/opencv2/imgcodecs.hpp 需要是opencv2/imgcodecs.hpp
  • @AlanBirtles 是的。 |另外,OP,在你开枪打自己的脚之前摆脱那些using namespace 行。 stackoverflow.com/questions/1452721/…

标签: c++ macos opencv homebrew


【解决方案1】:

谢谢@Alan Birtles。这只是我的包含问题。对于那些阅读,#include &lt;opencv4/opencv2/imgcodecs.hpp&gt;,以及所有其他 OpenCV 包,必须直接参考 OpenCV2。因此,例如,它必须是#include &lt;opencv2/imgcodecs.hpp&gt;

【讨论】:

    猜你喜欢
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 2013-07-20
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多