macOS(Intel)配置opencv(C++)
只是做一份歸檔。如有不當(dāng)之處請大佬們指正,謝謝!
前置條件:homebrew,Xcode

安裝pkg-config
brew install pkg-config
安裝opencv
brew install opencv
測試是否安裝完成:pkg-config --cflags --libs opencv
??? 2.1 此時您可能會出現(xiàn)下面的錯誤:
??? 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這個配置信息文件,故解決方法就是添加這個文件然后將其導(dǎo)入到環(huán)境變量中。
??????? 2.1.1解決方案:先創(chuàng)建opencv.pc文件,這里要注意它的路徑信息:
??????? cd /usr/local/lib
??????? sudo mkdir pkgconfig
??????? cd pkgconfig
??????? sudo touch opencv.pc
??????? 然后在opencv.pc中添加以下信息,注意這些信息需要與自己安裝opencv時的庫路徑對應(yīng):??????? prefix=/usr/local
??????? exec_prefix=${prefix}
??????? includedir=${prefix}/include
??????? libdir=${exec_prefix}/lib
??????? Name: 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
?~????????????????????????????????????????????? ?
??????? 保存退出,然后將文件導(dǎo)入到環(huán)境變量:??????? export? PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
??????? 之后執(zhí)行pkg-config --cflags --libs opencv檢驗
下面給出測試
測試來自opencv官方例程的代碼文件
#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, // font face and scale
??????????? Scalar(255, 255, 255), // white
??????????? 1, LINE_AA); // line thickness and type
}g++ example.cpp -o example.o -c -Wall -I/usr/local/include/openCV4 -std=c++11
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
由于是用C++并且筆者想在終端中直接使用,所以需要ln -s /usr/local/include/openCV4/openCV2 openCV2
默認(rèn)情況下,通過brew安裝的opencv目錄于:/usr/local/Cellar/opencv
如果想在終端下使用,所以需要建立軟連接
注意:"OpenCV 4.x+ requires enabled C++11 support"