在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网络不稳定时常会下载失败,可以把图中标出来的两句删除语句注释掉,以防一遍又一遍的下载文件又删掉。
在这里插入图片描述
在这里插入图片描述
编译出来的 opencv 是动态库。我试了改编译选项可以编译成静态库,但这样在 go 编译程序时会提示找不到opencv相关的库,具体我也没细究,因为着急用,就直接用的动态库版。

GoCV 这个包有个地方很尴尬,因为它链接的是动态库,所以如果要把自己写的程序打包给别人用,就必须把所有的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)
}

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

在这里插入图片描述

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

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


欢迎关注我的微信公众号 江达小记

版权声明:本文为CSDN博主「Raring_Ringtail」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010750137/article/details/123147273

Raring_Ringtail

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

PyQt5 + Python-Opencv 打开摄像头

声明:这只是简简单单地打开摄像头显示图片的代码。 ui代码(直接用Qt Designer设计的): 要用的库全放ui代码里了,就不放在实现代码里了,直接两段代码黏一起就可运行。 from PyQt

python-OpenCV图像图形检测(四)

实例下载:图形检测,检测图形轮廓,边缘检测,轮廓拟合 一、简介 图形检测是计算机视觉的一项重要功能,通过图形检测可以分析图像中可能存在的形状,然后对这些形状进