gocv是OpenCV4在Go中的绑定,使用它可以在Go里做图像处理。
Github:https://github.com/hybridgroup/gocv
Windows安装官方介绍:https://gocv.io/getting-started/windows/
安装gocv
go
会安装到%GOPATH%src下。
编译OpenCV
要使用gocv,需要编译OpenCV。编译并不复杂,需要安装MinGW-W64和CMake。
1、安装MinGW-W64
- 下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
- 版本要大于7.0,参数要选posix、seh,如下图;
- 下载后解压到任意位置,再将mingw64bin添加到环境变量。
2、安装CMake
- 下载地址:https://cmake.org/download/
- 正常安装,环境变量自动添加。
3、编译
cd
其中gocv库提供的win_build_opencv.cmd为安装过程命令:
- 下载opencv-4.1.2.zip并解压到C:opencv
- 下载opencv_contrib-4.1.2.zip并解压到C:opencv
- cmake
- mingw32-make
- mingw32-make install
其中set PATH那行可以省略。
echo
编译好后,添加C:opencvbuildinstallx64mingwbin到环境变量。
注意:
1、mingw32-make过程中断,编译失败
-
- 可能是由于多线程编译时有的依赖库还没有生成造成的
- 解决办法:反复执行mingw32-make
2、Python的影响
-
- 如果你的电脑装了Python,且环境变量添加了Python安装目录,可能会出现链接错误,这是因为有些lib依赖库按环境变量在Python目录中找到了,而这些库与编译不匹配。
- 解决办法:环境变量去掉Python目录,更简单的办法是把Python目录改名,编译完成后再改回来。
测试OpenCV
cd
结果
gocv version: 0.21.0
opencv lib version: 4.1.2
安装成功。
问题
按以上过程编译、安装,不用额外配置就能直接使用。如果报错找不到 #include<opencv2/opencv.hpp>,可能是你没在C:opencv下编译,Go就是这么无情!实际上,Gocv的默认Opencv路径在gocv.ioxgocvcgo.go里定义:
// +build !customenv,!openvino
解决办法:如下配置CGO环境变量,然后使用-tags customenv执行go编译和运行
set CGO_CXXFLAGS="--std=c++11"
set CGO_CPPFLAGS=-IC:opencvbuildinstallinclude
set CGO_LDFLAGS=-LC:opencvbuildinstallx64mingwlib -lopencv_core412 -lopencv_face412 -lopencv_videoio412 -lopencv_imgproc412 -lopencv_highgui412 -lopencv_imgcodecs412 -lopencv_objdetect412 -lopencv_features2d412 -lopencv_video412 -lopencv_dnn412 -lopencv_xfeatures2d412 -lopencv_plot412 -lopencv_tracking412 -lopencv_img_hash412
其中路径修改为你的OpenCV目录;如果使用了不同版本的OpenCV,修改412为相应的版本号。使用方法:
go run -tags customenv cmdversionmain.go