【发布时间】: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/…