当前位置:首页 > 说编程 > 正文内容

gocv库安装,Go安装OpenCV库(windows)

2021-06-09说编程3018

gocv是OpenCV4在Go中的绑定,使用它可以在Go里做图像处理。

Github:https://github.com/hybridgroup/gocv

Windows安装官方介绍:https://gocv.io/getting-started

安装gocv

go get -u -d gocv.io/x/gocv

会安装到%GOPATH%\src下。

编译OpenCV

要使用gocv,需要编译OpenCV。编译并不复杂,需要安装MinGW-W64和CMake。

1、安装MinGW-W64

  1. 1)下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/

  2. 2)版本要大于7.0,参数要选posix、seh,如下图;

  3. 3)下载后解压到任意位置,再将mingw64\bin添加到环境变量。

image.png

2、安装CMake

下载地址:https://cmake.org/download/

正常安装,环境变量自动添加。

3、编译

cd %GOPATH%\src\gocv.io\x\gocv
win_build_opencv.cmd

其中gocv库提供的win_build_opencv.cmd为安装过程命令:

  1. 1)下载opencv-4.5.2.zip并解压到C:\opencv

  2. 2)下载opencv_contrib-4.5.2.zip并解压到C:\opencv

  3. 3)cmake

  4. 4)mingw32-make

  5. 5)mingw32-make install

其中set PATH那行可以省略。

编译好后,添加C:\opencv\build\install\x64\mingw\bin到环境变量。

注意:

  1. 1)mingw32-make过程中断,编译失败

  2. 可能是由于多线程编译时有的依赖库还没有生成造成的

  3. 解决办法:反复执行mingw32-make

  4. 2)Python的影响

  5. 如果你的电脑装了Python,且环境变量添加了Python安装目录,可能会出现链接错误,这是因为有些lib依赖库按环境变量在Python目录中找到了,而这些库与编译不匹配。

  6. 解决办法:环境变量去掉Python目录,更简单的办法是把Python目录改名,编译完成后再改回来。

测试OpenCV

cd %GOPATH%\src\gocv.io\x\gocv
go run cmd\version\main.go

结果

gocv version: 0.21.0
opencv lib version: 4.5.2

安装成功。

问题

按以上过程编译、安装,不用额外配置就能直接使用。如果报错找不到 #include<opencv2/opencv.hpp>,可能是你没在C:\opencv下编译,Go就是这么无情!实际上,Gocv的默认Opencv路径在gocv.io\x\gocv\cgo.go里定义:

// +build !customenv,!openvino
package gocv
// Changes here should be mirrored in contrib/cgo.go and cuda/cgo.go.
/*
#cgo !windows pkg-config: opencv4
#cgo CXXFLAGS:   --std=c++11
#cgo windows  CPPFLAGS:   -IC:/opencv/build/install/include
#cgo windows  LDFLAGS:    -LC:/opencv/build/install/x64/mingw/lib -lopencv_core452 -lopencv_face452 -lopencv_videoio452 -lopencv_imgproc452 -lopencv_highgui452 -lopencv_imgcodecs452 -lopencv_objdetect452 -lopencv_features2d452 -lopencv_video452 -lopencv_dnn452 -lopencv_xfeatures2d452 -lopencv_plot452 -lopencv_tracking452 -lopencv_img_hash452 -lopencv_calib3d452
*/
import "C"

解决办法:如下配置CGO环境变量,然后可以考虑使用-tags customenv执行go编译和运行

set CGO_CXXFLAGS=--std=c++11
set CGO_CPPFLAGS=-IC:\opencv\build\install\include
set CGO_LDFLAGS=-LC:\opencv\build\install\x64\mingw\lib -lopencv_core452 -lopencv_face452 -lopencv_videoio452 -lopencv_imgproc452 -lopencv_highgui452 -lopencv_imgcodecs452 -lopencv_objdetect452 -lopencv_features2d452 -lopencv_video452 -lopencv_dnn452 -lopencv_xfeatures2d452 -lopencv_plot452 -lopencv_tracking452 -lopencv_img_hash452

go env -w CGO_CXXFLAGS="--std=c++11"
go env -w CGO_CPPFLAGS="-IC:\opencv\build\install\include"
go env -w CGO_LDFLAGS="-LC:\opencv\build\install\x64\mingw\lib -lopencv_core452 -lopencv_face452 -lopencv_videoio452 -lopencv_imgproc452 -lopencv_highgui452 -lopencv_imgcodecs452 -lopencv_objdetect452 -lopencv_features2d452 -lopencv_video452 -lopencv_dnn452 -lopencv_xfeatures2d452 -lopencv_plot452 -lopencv_tracking452 -lopencv_img_hash452"

其中路径修改为你的OpenCV目录;如果使用了不同版本的OpenCV,修改452为相应的版本号。使用方法:

go run -tags customenv cmd\version\main.go

go run cmd\version\main.go

运行时弹出exit status 3221225781怎么办?

解决办法:在实践中,我使用的地址跟gocv官方提供的不一样。根据github上的反馈,似乎使用gocv官方的那个路径会有问题,使用默认路径即可。

扫描二维码推送至手机访问。

本站内容仅供学习研究,转载请以链接形式注明,如有侵犯请联系处理。

本文链接:https://suyu.net/post/44.html

分享给朋友:

发表评论

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。