1.系统准备好,安装依赖python版本高一点的,并且安装上numpy。
brew install cmake gui及cmake,可能装cmake gui的时候有点问题,先装gui再装cmake。
2.提前下载源码,Releases - OpenCV要求opencv与opencv contrib版本一致。在线也可以,就是怕网不稳定,中间出错。
GitHub - opencv/opencv at 4.6.0
3 放在自己想安装的地方。
4 在想安装目录下新建文件夹,如build,建议放到opencv文件夹下。
5 打开cmake gui界面,在源码和目标文件夹填入对应地址,
(图传不上,mmp)
6 点击config,会让选择一个编译环境,选unix makefile,选xcode不生成makefile文件。
这期间可能会出错,根据实际情况查,这次比较幸运,成功了。
7 config成功后,选择opencv extend modules地址,填入一起下载的opencv contrib modules的地址,选上它上面那一栏,选上build opencv world,安装地址relese就好,这样不用配置环境变量。
再次编译。
8 编译成功后,点generat,成功后暂时不用管cmake gui这里了。
9从刚才新建的安装文件夹,本次安装是build文件夹,进入终端,然后输入make,此过程用时很长(1-2小时),而且过程会出很多错。
- 找不到ffmpeg xxx,电脑没安装,或者安装的版本不匹配,4.6的opencv要4.x的ffmpeg,brew uninstall ffmpeg,然后brew install ffmpeg@4.不知道是不是这个原因,反正后来没报这个错了;
- 没有编译zlib xxx的rule,查到的是和系统安装的冲突,卸载homebrew(怎么可能卸,开玩笑),或者取消选择这一项,然后取消选择build zlib。重新config 和generate,重新make,,后来这一项不报错了。
- 报/Users/christon/Applications/opencv/opencv_contrib-4.6.0/modules/sfm/src/libmv_light/libmv/simple_pipeline/bundle.cc:553:37: error: cannot initialize a parameter of type 'ceres::LocalParameterization *' with an lvalue of type 'ceres::SubsetManifold *',
解决办法:Use ceres::Manifolds instead of ceres::LocalParameterization. by vrabaud · Pull Request #3243 · opencv/opencv_contrib · GitHub
如果还报错,暂时取消build world,最后再config generate一次,我反复编译了好几次。
终于没啥问题了。
10 make后,输入sudo make install ,直接输make install 会导致一些东西没权限,报错。
然后就装好啦。上一次放弃的加这次,总共用了大概3天。
男默女泪。。。