前置条件:homebrew,Xcode
安装pkg-config
安装opencv
测试是否安装完成:
此时您可能会出现下面的错误: Package opencv was not found in the pkg-config search path. Perhaps you should add the directory containing `opencv.pc’ to the PKG_CONFIG_PATH environment variable No package ‘opencv’ found
你先别急:原因是缺失了opencv.pc这个配置信息文件,故解决方法就是添加这个文件然后将其导入到环境变量中。
解决方案:先创建opencv.pc文件,这里要注意它的路径信息:1 2 3 4 cd /usr/local/libsudo mkdir pkgconfigcd pkgconfigsudo touch opencv.pc
然后在opencv.pc中添加以下信息,注意这些信息需要与自己安装opencv时的库路径对应:1 2 3 4 5 6 7 8 9 10 11 prefix =/usr/localexec_prefix =${prefix} includedir =${prefix} /includelibdir =${exec_prefix} /libName: opencv Description: The opencv library Version:4.8.0 Cflags: -I${includedir} /opencv4 Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
保存退出,然后将文件导入到环境变量:1 export PKG_CONFIG_PATH =/usr/local/lib/pkgconfig
之后执行检验
由于是用C++并且笔者想在终端中直接使用,所以需要1 ln -s /usr/local/include/opencv4/opencv2 opencv2
默认情况下,通过brew安装的opencv目录于:1 /usr/ local/Cellar/ opencv
如果想在终端下使用,所以需要建立软连接
注意:”OpenCV 4.x+ requires enabled C++11 support”
下面给出测试 测试来自opencv官方例程的代码文件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include "opencv2/videoio.hpp" #include <iostream> using namespace cv;using namespace std;void drawText (Mat & image) ;int main () { cout << "Built with OpenCV " << CV_VERSION << endl; Mat image; VideoCapture capture; capture.open (0 ); if (capture.isOpened ()) { cout << "Capture is opened" << endl; for (;;) { capture >> image; if (image.empty ()) break ; drawText (image); imshow ("Sample" , image); if (waitKey (10 ) >= 0 ) break ; } } else { cout << "No capture" << endl; image = Mat::zeros (480 , 640 , CV_8UC1); drawText (image); imshow ("Sample" , image); waitKey (0 ); } return 0 ; } void drawText (Mat & image) { putText (image, "Hello OpenCV" , Point (20 , 50 ), FONT_HERSHEY_COMPLEX, 1 , Scalar (255 , 255 , 255 ), 1 , LINE_AA); }
1 g++ example .cpp -o example .o -c -Wall -I/usr/local /include/opencv4 -std =c++11
1 g++ example.o -o opencv_example -L/usr/local /lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core