GOCV:填充多边形

公司有绘制无反锯齿(without anti-aliasing)多边形图像的需求,谷歌了好久,尝试过了绝大多数的golang绘图库,无一例外,都默认开启了反锯齿,且无法关闭。

最终还是只能投靠OpenCV爸爸。这边采用了GOCV,进行填充无反锯齿的多边形。

    img := gocv.NewMatWithSize(700, 700, gocv.MatTypeCV8UC3)    //create 700*700 matrix
	defer img.Close()

    // make vertices' ponts
	pts := [][]image.Point{
		{
			image.Pt(160,269),
			image.Pt(148,341),
			image.Pt(173,407),
			image.Pt(289,426),
			image.Pt(502,411),
			image.Pt(599,276),
			image.Pt(525,155),
			image.Pt(514,201),
			image.Pt(549,261),
			image.Pt(542,303),
			image.Pt(488,324),
			image.Pt(458,280),
			image.Pt(453,196),
			image.Pt(426,141),
			image.Pt(408,176),
			image.Pt(422,235),
			image.Pt(420,308),
			image.Pt(430,348),
			image.Pt(487,344),
			image.Pt(504,361),
			image.Pt(473,386),
			image.Pt(408,386),
			image.Pt(381,362),
			image.Pt(384,315),
			image.Pt(380,263),
			image.Pt(375,138),
			image.Pt(395,82),
			image.Pt(466,52),
			image.Pt(536,61),
			image.Pt(598,64),
			image.Pt(616,15),
			image.Pt(555,3),
			image.Pt(446,25),
			image.Pt(377,37),
			image.Pt(350,54),
			image.Pt(340,122),
			image.Pt(351,182),
			image.Pt(346,233),
			image.Pt(340,276),
			image.Pt(293,238),
			image.Pt(305,191),
			image.Pt(259,99),
			image.Pt(251,182),
			image.Pt(280,258),
			image.Pt(299,317),
			image.Pt(295,326),
			image.Pt(228,352),
			image.Pt(210,263),
			image.Pt(220,168),
			image.Pt(172,128),
			image.Pt(57,156),
			image.Pt(18,205),
			image.Pt(28,255),
			image.Pt(81,200),
			image.Pt(130,170),
			image.Pt(154,195),
			image.Pt(135,217),
			image.Pt(121,245),
			image.Pt(148,237),
			image.Pt(167,241),
		},
	}

    // Choose color
	c := color.RGBA{2, 233, 233, 0}

    // draw Polygon
	gocv.FillPoly(&img, pts, c)

    // Save to Image file
	imageContent, _ := img.ToImage()

	out, err := os.Create("./output.png")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	err = png.Encode(out, imageContent)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

输出效果应该如下:

 

以上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值