gocv opencv的go版本

1 篇文章 0 订阅

源图到绘制轮廓
要想学习gocv怎么用,得先去学习opencv
gocv的学习资料几乎没有

package main import ( "fmt" "image/color" "log" "github.com/go-vgo/robotgo" "gocv.io/x/gocv" ) func main() {
src := gocv.IMRead("img/terrain2.png", -1)
if src.Empty() {
	log.Fatalln("没有...")
}
//窗口显示源图片
srcW := gocv.NewWindow("src")
defer srcW.Close()
srcW.IMShow(src)
dst1 := gocv.NewMat()
//中值模糊--模糊后还可以用腐蚀和膨胀去除图中的杂点
gocv.MedianBlur(src, &dst1, 9) // ksize int这个参数只能是质数
dst1W := gocv.NewWindow("dst1 ")
defer dst1W.Close()
dst1W.IMShow(dst1)
//转灰度图
dst := gocv.NewMat()
gocv.CvtColor(dst1, &dst, gocv.ColorRGBToGray)
dstW := gocv.NewWindow("dst")
defer dstW.Close()
dstW.IMShow(dst)
//二值化
edges := gocv.NewMat()
gocv.Canny(dst, &edges, 20, 100)
edgesW := gocv.NewWindow("edges")
defer edgesW.Close()
edgesW.IMShow(edges)
//找图片轮廓
contMat := gocv.Zeros(edges.Rows(), edges.Cols(), edges.Type())
contMatW := gocv.NewWindow("contMat")
defer contMatW.Close()
pointsVector := gocv.FindContours(edges, gocv.RetrievalTree, gocv.ChainApproxSimple)
fmt.Println(pointsVector)
//r := rand.New(rand.NewSource(time.Now().UnixNano())) //以当前时间纳秒为种子
//uint8(r.Intn(255)
c := color.RGBA{0, 255, 255, 0}
//画轮廓
for k := range pointsVector.ToPoints() {//这个for range,少了一个参数,没报错,奇迹
	gocv.DrawContours(&contMat, pointsVector, k, c, 2)
}
contMatW.IMShow(contMat)
srcW.WaitKey(0)

}

带尺寸的图片: 在这里插入图片描述

ome.csdnimg.cn/images/20220524100510.png =60x60)

宽度确定高度等比例的图片: 在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值