安装python
mac有自带的,主要是用python3
安装opencv
一种办法是通过homebrew来安装,安装命令 brew install opencv@3(如果没有“@3”,就会安装opencv4,opencv4没有调试成功,最后会出现symbol not found的动态库bug
ImportError: dlopen(/opt/homebrew/Cellar/opencv/4.5.5/lib/python3.9/site-packages/cv2/python-3.9/cv2.cpython-39-darwin.so, 0x0002):
Symbol not found: __ZN2cv3dnn14dnn4_v202112203Net10getLayerIdERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE
Referenced from: /opt/homebrew/Cellar/opencv/4.5.5/lib/python3.9/site-packages/cv2/python-3.9/cv2.cpython-39-darwin.so
Expected in: /usr/local/lib/libopencv_dnn.4.5.5.dylib
)
一种办法上通过cmake来对源码进行编译。cmake编译有两种,一种是brew安装cmake,用cmake命令进行编译,(这种办法安装后,opencv的库在/usr/local/lib中,头文件在/usr/local/include中,不便于寻找)。一种是cmake程序编译源码。(这种办法和brew都是安装到了一个文件夹中,brew是安装在homebrew的安装文件夹中,cmake程序是自定义)
安装opencv后,在终端输入命令
python3
import cv2
没有提示则表示opencv安装正确
vscode调试
调试中最棘手的是#include<opencv2/opencv.hpp> 出现波浪线,提示opencv.hpp unfound的错误
解决办法:在/usr/local/include 建立opencv2的软链接
ps:网上说的在vscode的c_cpp_properties中的includepath不管用,(具体原因大概是vscode的includepath并不影响debug,只是匹配有用--有待验证)
错误2:#include<opencv2/opencv.hpp>出现#include错误
解决办法:在c_cpp_properties中正确设置compile path。[一般是/usr/bin/clang++]
错误3:Undefined symbols for architecture arm64:
解决办法:tasks.json的args最后添加"`pkg-config --cflags --libs opencv`"[这一步主要是链接动态库,macos不会自动链接动态库]
错误4:有可能回遇到c++版本要求c++11的情况(一般不会有这个问题)
解决办法:task.json的args添加"--std=c++11",
完成之后的配置(一般只需要在tasks.json更改)
tasks.json
c_cpp_properties.json
launch.json
本篇主要是记录,主要是讲一下大致思路和最棘手的一些问题,不详细的地方请见谅
homebrew在m1的具体安装流程自行百度。