在go中使用opencv

在go中使用opencv还是比较麻烦的,如果使用的是 mac 或 linux 还好,在windows下就比较痛苦。

GoCV 包提供了对 opencv 4.5.4 的支持,官方提供了一键安装的脚本。

对于 linux 和 mac 系统,直接按官方的教程就可以了,不会遇到太多问题。官方安装指南在这:
https://gocv.io/getting-started/linux/
https://gocv.io/getting-started/macos/

对于 windows 步骤相对比较复杂,它通过 MinGW 来编译,首先要安装 MinGW 以及 CMake ,直接安 MSYS2 也可以,不过最好还是和 GoCV 官方用的一致,装MinGW 7.3.0,因为接下来可以看到它的编译脚本里已经把目录写死了😂,如果不一致要自己改一下会比较麻烦😂。官方安装指南在这:https://gocv.io/getting-started/windows/

大体上的步骤都可以按官方文档里写的来,如果出错一般是环境没有配好,最好把 MinGW 下的 mingw64\bin 目录加到 PATH 环境变量中。编译 opencv 时可以改一下 GOPATH 下 \src\gocv.io\x\gocv 里的 win_build_opencv.cmd 文件,因为GitHub网络不稳定时常会下载失败,可以把图中标出来的两句删除语句注释掉,以防一遍又一遍的下载文件又删掉。
在go中使用opencv
在go中使用opencv
编译出来的 opencv 是动态库。我试了改编译选项可以编译成静态库,但这样在 go 编译程序时会提示找不到opencv相关的库,具体我也没细究,因为着急用,就直接用的动态库版。

GoCV 这个包有个地方很尴尬,因为它链接的是动态库,所以如果要把自己写的程序打包给别人用,就必须把所有的opencv动态库都和我们写的程序放在一起,少一个都不能用😂😅。
在go中使用opencv
在 go 里写 opencv 还是很舒服的,相对于 c++ go的语法写起来要灵活很多。

以下是读取图片并显示图片的示例:

package main

import (
	"gocv.io/x/gocv"
)

func main() {
	img := gocv.IMRead("avatar.jpg", gocv.IMReadColor)
	window := gocv.NewWindow("Hello")

	window.IMShow(img)
	window.WaitKey(0)
}

运行后会弹出一个窗口显示图片。

在go中使用opencv

相对来讲,显示图片的函数(imshow)不像在 c++ 中到处都可以写,在GoCV中只能通过先定义一个 window 然后由window 调用 IMShow 显示图片。而且,window只能在主线程中开,如果开个协程来显示程序会直接挂掉。

除去这一点点不便,GoCV 用起来还是很爽的。

欢迎关注我的微信公众号江大小吉

版权声明:本文为博主Raring_Ringtail原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/u010750137/article/details/123147273

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年2月24日 下午2:24
下一篇 2022年2月28日 下午9:04

相关推荐