python+opencv已经比较成熟了,但是比起go,python太缺乏秩序,所以打算后面用go玩opencv。
闲话不多说,开始。
第一步:安装mingw-w64但是下载链接很难找!而且下载器很难用
在上图位置找到自己系统对应的安装包即可。我的64位win10用的是x86_64-win32-seh。
第二步:安装gocv下载完成后,可考虑直接使用gocv自带工具构建opencv。
在$GOPATH/src/gocv.io/x/gocv中执行
但此方法下载极慢,走代理之后也遇到很多坑,并不实用。如想尝试,可直接参考https://gocv.io/getting-started/windows/
笔者选择自己从源码编译。
第三步:编译opencv+contrib源码下载源码
下载并安装cmake
cmake生成
打开cmake-gui,看到如下界面
依次填写源码位置以及目标地址,点一次configure,弹出如下界面
然后出现
打开git-bash,依次输入
再按上述步骤操作即可Configure成功
接下来,搜索OPENCV_EXTRA_MODULES_PATH,并在该项中填写之前clone的opencv_contrib/modules的路径,重新configure一次,这样opencv_contrib会一起构建
一般而言,此时可以点Generate使用默认的配置生成代码了。如果有兴趣,可以自己探索一下其它选项。比如选中WITH_CUDA可以使用Intel CUDA用GPU来加速算法。当然,首先你要有Intel显卡以及CUDA开发环境。
编译安装
在构建目录下,执行
即可。注意:此过程预计耗时1小时以上
第四步:go+opencv环境配置gocv使用cgo来调用opencv的库,本来按照官网说明是支持自定义位置的,但是无论怎么做,都会说找不到静态库。所以只好把编译好的资源,放在gocv默认的位置上。
在git-bash中执行
最后将此路径加入到环境变量PATH中即可
第五步:验证gocv执行
如果打印出
就大功告成!
问题处理Q1: gocv版本与opencv版本不一致怎么办?
一般而言,gocv比opencv会稍慢一拍。笔者编译的是opencv4.1.1(2019/7/28发布),而gocv在这天默认使用4.1.0。由于自定义CGO环境出了很多问题,对于版本不一致且又不愿意重新编译一遍的同学,可以使用重命名的方式解决。
在相应库文件目录下(如/c/opencv/build/install/x64/mingw/lib),执行以下脚本
Q2:运行时弹出exit status 3221225781怎么办?
确认第四步中将bin目录加入到了path。在实践中,我使用的地址跟gocv官方提供的不一样。根据github上的反馈,似乎使用gocv官方的那个路径会有问题。
其他想了解opencv有什么玩法,可以参考笔者另一篇文章
简单介绍了视频防抖的基本流程,还有自己开发的防抖系统的样例视频。