python+opencv已经比较成熟了,但是比起go,python太缺乏秩序,所以打算后面用go玩opencv。
闲话不多说,开始。
但是下载链接很难找!而且下载器很难用
来这里一步到位https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
在上图位置找到自己系统对应的安装包即可。我的64位win10用的是x86_64-win32-seh。
go get -u -d gocv.io/w/gocv
下载完成后,可考虑直接使用gocv自带工具构建opencv。
在$GOPATH/src/gocv.io/x/gocv中执行
./win_build_opencv.cmd
但此方法下载极慢,走代理之后也遇到很多坑,并不实用。如想尝试,可直接参考https://gocv.io/getting-started/windows/
笔者选择自己从源码编译。
git clone https://github.com/opencv/opencv
git clone https://github.com/opencv/opencv_contrib
打开cmake-gui,看到如下界面
依次填写源码位置以及目标地址,点一次configure,弹出如下界面
然后出现
打开git-bash,依次输入
export CMAKE_CXX_COMPILER=gcc
export CMAKE_C_COMPILER=gcc
cmake-gui
再按上述步骤操作即可Configure成功
接下来,搜索OPENCV_EXTRA_MODULES_PATH,并在该项中填写之前clone的opencv_contrib/modules的路径,重新configure一次,这样opencv_contrib会一起构建
一般而言,此时可以点Generate使用默认的配置生成代码了。如果有兴趣,可以自己探索一下其它选项。比如选中WITH_CUDA可以使用Intel CUDA用GPU来加速算法。当然,首先你要有Intel显卡以及CUDA开发环境。
在构建目录下,执行
make && make install
即可。注意:此过程预计耗时1小时以上
gocv使用cgo来调用opencv的库,本来按照官网说明是支持自定义位置的,但是无论怎么做,都会说找不到静态库。所以只好把编译好的资源,放在gocv默认的位置上。
在git-bash中执行
mkdir -p /c/opencv
cp -r YOUR_BUILD_PATH/install /c/opencv/
最后将此路径加入到环境变量PATH中即可
c:/opencv/build/install/bin
执行
go run $GOPATH/src/gocv.io/x/gocv/cmd/version/main.go
如果打印出
就大功告成!
一般而言,gocv比opencv会稍慢一拍。笔者编译的是opencv4.1.1(2019/7/28发布),而gocv在这天默认使用4.1.0。由于自定义CGO环境出了很多问题,对于版本不一致且又不愿意重新编译一遍的同学,可以使用重命名的方式解决。
在相应库文件目录下(如/c/opencv/build/install/x64/mingw/lib),执行以下脚本
import os
for file in os.listdir():
if file.find("411.dll") < 0:
continue
to = file.replace("411", "410")
os.system("cp " + file +" "+to)
确认第四步中将bin目录加入到了path。在实践中,我使用的地址跟gocv官方提供的不一样。根据github上的反馈,似乎使用gocv官方的那个路径会有问题。
想了解opencv有什么玩法,可以参考笔者另一篇文章
简单介绍了视频防抖的基本流程,还有自己开发的防抖系统的样例视频。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。