opencv居然还没有官方的golang版,出乎意料。为了编译安装这玩意,折腾了一下午,记录下:
资源提前下载
1、 MinGW-w64
这里的坑是对于只懂一点点的人,容易选错版本:
没仔细看的人很可能会选win32的(我就是),因为下意识认为Windows下选择这个版本!!
2、cmake选择系统对应版本就好
3、opencv源码官网给的脚本里地址是github上的,我这里是在gitcode上找的同步更新的源代码。这里需要提前下好,不然用脚本的话,一下午都下不好。
4、opencv_contrib同上,找的镜像,在国内下载会快很多
此外,编译过程中还会需要下载一些东西,那些不好找,而且很可能下载失败,建议修改host:“C:\Windows\System32\drivers\etc\hosts” ,在末尾加上一行:
151.101.8.133 raw.githubusercontent.com
该操作杀毒软件会拦截,等编译完再删掉它。当然,加了也不一定就能顺利下载,反正我倒是下载下来了,也不知道是运气好,还是这玩意生效了。
安装 gocv
这里还需要提前安装gocv,因为以来它的脚本来编译。
go get -u -d gocv.io/x/gocv
下载完的保存路径是:
%GOPATH%\pkg\mod\gocv.io\x\gocv@v0.33.0
%GOPATH% 可用以下指令查看:
go env
到该目录下, 可以看到一个脚本“win_build_opencv.cmd”
这个脚本不能直接用,这里就是官方文档没有讲到的坑了
添加环境变量
对,看图就知道:
1、在C盘下新建目录“C:\opencv”
2、将第一步下载的opencv源码和opencv_contrib解压到该目录下
3、mingw64解压到该目录下(也可到其他目录,只需添加对应的环境变量即可),并且给C:\opencv\mingw64\bin
添加到环境变量中
4、cmake一直下一步安装。正常安装的话,是会自动添加环境变量的,不需要手动添加。
然后对应的目录如下图所示
修改脚本
此时进入目录C:\Users\PC\go\pkg\mod\gocv.io\x\gocv@v0.33.0
,打开文件“win_build_opencv.cmd”,改脚本不能直接运行,需要修改内容成如下:
set PATH=%PATH%
set enable_shared=ON
cmake C:\opencv\opencv-4.7.0 -G "MinGW Makefiles" -BC:\opencv\build -DENABLE_CXX11=ON -DOPENCV_EXTRA_MODULES_PATH=C:\opencv\opencv_contrib-4.7.0\modules -DBUILD_SHARED_LIBS=%enable_shared% -DWITH_IPP=OFF -DWITH_MSMF=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=ON -DBUILD_opencv_java=OFF -DBUILD_opencv_python=OFF -DBUILD_opencv_python2=OFF -DBUILD_opencv_python3=OFF -DBUILD_DOCS=OFF -DENABLE_PRECOMPILED_HEADERS=OFF -DBUILD_opencv_saliency=OFF -DBUILD_opencv_wechat_qrcode=ON -DCPU_DISPATCH= -DOPENCV_GENERATE_PKGCONFIG=ON -DWITH_OPENCL_D3D11_NV=OFF -DOPENCV_ALLOCATOR_STATS_COUNTER_TYPE=int64_t -Wno-dev
mingw32-make -j%NUMBER_OF_PROCESSORS%
mingw32-make install
chdir /D %GOPATH%\pkg\mod\gocv.io\x\gocv@v0.33.0
对,删去了绝大部分,因为这个脚本不过是调用cmake去编译而已,它本身不是编译脚本。
开始编译
打开CMD,执行命令:
CD C:\Users\PC\go\pkg\mod\gocv.io\x\gocv@v0.33.0
win_build_opencv.cmd
然后就是漫长的等待,大概需要一个小时,注意电脑别待机。
如果构建过程中报错,会有提示,否则应该是没啥“ERR”字眼的。
然后还有一部重要的,将“C:\opencv\build\install\x64\mingw\bin”添加到环境变量,然后需要重启CMD。
验证
cd C:\Users\PC\go\pkg\mod\gocv.io\x\gocv@v0.33.0\cmd\version
go run main.go
官网地址:https://github.com/hybridgroup/gocv