Opencv在mac下使用的一个坑
这个问题网上搜了很久,没有答案,之后仔细研究了pkg-config的机制,查看了默认的配置文件,终于发现了问题。
使用pkg-config时,如果是homebrew安装的opencv,其中的opencv.pc文件无法正常链接库文件,解决方法是修改其如下。
# Package Information for pkg-config
prefix=/usr/local/Cellar/opencv/3.3.1_1
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.3.1
Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_photo -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dpm -lopencv_face -lopencv_fuzzy -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -L/usr/local/lib -ltbb
Cflags: -I${includedir_old} -I${includedir_new}
此外,mac下,使用此行代码即可编译cpp文件
g++ 123.cpp `pkg-config --cflags --libs opencv`
一并附上123.cpp的内容
#include "opencv2/opencv.hpp"
int main() {
cv::Mat img = cv::imread("/Users/wzy/lena.jpg");
cv::imshow("Image", img);
cv::waitKey(0);
return 0;
}