使用 Go (Golang) 使用 OpenCV 绘制对象 GoCV

这篇具有很好参考价值的文章主要介绍了使用 Go (Golang) 使用 OpenCV 绘制对象 GoCV。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文将向你展示如何使用 OpenCV 使用 Go 编程语言 (Golang) 和 GoCV 包绘制直线、正方形、圆形和椭圆形对象。

OpenCV是一个主要用于实时计算机视觉的编程函数库。最初由 Intel 开发,然后由 Willow Garage 和 Itseez 提供支持。这个库是跨平台的,可以在开源 Apache 2 许可下免费使用。

除了绘制物体,OpenCV还可以用于人脸检测、运动跟踪等。

GoCV 是Golang语言的一个包,支持 Linux、macOS 和 Windows 上最新版本的 Go 和 OpenCV v4.5.4。GoCV 使 Go 语言成为兼容 OpenCV 生态系统最新发展的“一流”客户端。

GoCV 让 golang 程序员可以访问 OpenCV4 计算机视觉库。

要求

  1. 安装 Golang(确保目标操作系统与你的计算机匹配)

  2. 安装 OpenCV

安装 OpenCV

有关安装 OpenCV 的指南,你可以打开 GoCV 网站上的文档,网址为:https://gocv.io/

  1. macOS 安装:https://gocv.io/getting-started/macos/

  2. 在 Linux 上安装:https://gocv.io/getting-started/linux/

  3. Windows 安装程序:https://gocv.io/getting-started/windows/

或者你可以在此处(https://opencv.org/)访问官方网站。我们使用 MacOs 操作系统。

创建项目

首先,让我们使用以下命令创建一个新项目:

mkdir belajar-gocv
cd belajar-gocv

然后使用以下命令创建一个模块:

go mod init belajar-gocv

使用另一个 IDE 或编辑器打开项目,例如 VSCode。在根目录中创建一个名为main.go的文件,接下来我们将创建一个绘制对象的函数。

package main

func main() {
  // buat canvas
}

安装库

安装包 GoCV

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

使用 OpenCV 绘制对象

使用 OpenCV 除了可以提高图像或视频的图像质量外,还可以用于绘制和写入对象。

创建画布

打开main.go然后在 main 函数中更改/添加以下代码:

package main

import "gocv.io/x/gocv"

func main() {
 // membuat window baru
 window := gocv.NewWindow("Belajar Gambar Objek")
 defer window.Close()

 // membuat canvas
 width := 640
 height := 480
 canvas := gocv.NewMatWithSize(width, height, gocv.MatTypeCV8UC3)

 // loop
 for {
  // tampilkan canvas di window
  window.IMShow(canvas)

  // wait key to press
  if window.WaitKey(10) >= 0 {
   break
  }
 }
}

尝试使用以下命令运行上面的代码:

go run main.go

出现一个黑色的空白窗口

使用 Go (Golang) 使用 OpenCV 绘制对象 GoCV

新窗口

按键盘上的 esc 键关闭窗口。

制作颜色

首先我们准备要在对象上使用的颜色。打开main.go在创建画布后添加以下行

// membuat canvas
...

// membuat warna
 red := color.RGBA{255, 0, 0, 0}
 green := color.RGBA{0, 255, 0, 0}
 blue := color.RGBA{0, 0, 255, 0}
 purple := color.RGBA{106, 90, 205, 0}

// loop
...
画线

成功创建画布后,接下来我们尝试用线(line)绘制画布。在画线之前,我们必须了解画线所用的函数和属性。用来画线的函数结构和属性如下:

gocv.Line(img *gocv.Mat, pt1 image.Point, pt2 image.Point, c color.RGBA, thickness int)
  • img = 用于指定使用内存地址引用绘制线条的位置

  • pt1 = (x1, y1) 创建线的第一个点的起始坐标

  • pt2 = (x2, y2) 结束坐标创建直线的终点

  • c = (color) 一个介于 0-255 之间的值,用于创建 RGBA 颜色

  • thickness=线宽

打开 main.go 并添加以下行:

// membuat canvas
...

// membuat warna
...

// membuat garis
 gocv.Line(&canvas, image.Pt(100, 150), image.Pt(300, 400), red, 1)

// loop
...

尝试使用以下命令运行上面的代码:

go run main.go

所以结果会是这样:

使用 Go (Golang) 使用 OpenCV 绘制对象 GoCV
创建一个正方形

要创建的第二个对象是一个正方形。

gocv.Rectangle(img *gocv.Mat, r image.Rectangle, c color.RGBA, thickness int)
  • img:用于通过引用其内存地址来指定矩形将在何处绘制

  • r = (x0, y0, x1, y1) :x0和y0是正方形左上角的坐标,x1和y1是正方形右下角的坐标

  • c = (color) :一个介于 0-255 之间的值,用于创建 RGBA 颜色

  • thickness:线宽

打开main.go并添加以下行:

// membuat canvas
...
// membuat warna
...
// membuat garis
...
// membuat persegi
 gocv.Rectangle(&canvas, image.Rect(150, 200, 350, 400), green, 2)
// loop
...

尝试使用以下命令运行上面的代码:

go run main.go

所以结果会是这样:

使用 Go (Golang) 使用 OpenCV 绘制对象 GoCV
创建一个圆
gocv.Circle(img *gocv.Mat, center image.Point, radius int, c color.RGBA, thickness int)
  • img = 用于指定使用其内存地址引用绘制圆的位置

  • center = (x, y) 表示圆在x和y轴上的圆心

  • radius = 表示圆的半径(面积)

  • c = (color) 一个介于 0-255 之间的值,用于创建 RGBA 颜色

  • thickness = 线宽(-1 表示填充所有空格)

打开main.go并添加以下行:

// membuat canvas
...
// membuat warna
...
// membuat garis
...
// membuat persegi
...
// membuat lingkaran
 gocv.Circle(&canvas, image.Pt(220, 250), 80, blue, -1)
// loop
...

尝试使用以下命令运行上面的代码:

go run main.go

所以结果会是这样的:

使用 Go (Golang) 使用 OpenCV 绘制对象 GoCV
创建一个椭圆
gocv.Ellipse(img *gocv.Mat, center image.Point, axes image.Point, angle float64, startAngle float64, endAngle float64, c color.RGBA, thickness int)
  • center = (x, y) 椭圆中点的坐标

  • axes = (minorAxes, majorAxes) = 短轴和长轴的长度

  • angel = rotation,椭圆的旋转角度是逆时针计算的

  • startAngle = 开始角度(顺时针数)

  • endAngel = 结束角度(顺时针数)

  • c = (color) 一个介于 0-255 之间的值,用于创建 RGBA 颜色

  • thickness = 线宽

打开main.go并添加以下行:

// membuat canvas
...
// membuat warna
...
// membuat garis
...
// membuat persegi
...
// membuat lingkaran
...
// membuat ellips
 gocv.Ellipse(&canvas, image.Pt(300, 500), image.Pt(100, 50), 45, 130, 270, purple, 4)
// loop
...

尝试使用以下命令运行上面的代码:

go run main.go

所以结果会是这样:

使用 Go (Golang) 使用 OpenCV 绘制对象 GoCV
源代码
  • https://github.com/apriliantocecep/belajar-gocv

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓文章来源地址https://www.toymoban.com/news/detail-470130.html

到了这里,关于使用 Go (Golang) 使用 OpenCV 绘制对象 GoCV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • gocv读取gif多帧图像,mp4视频图像,opencv,VideoCaptureFile,opencv_ffmpeg

    读取GIF图像 opencv中无法读取gif图像,这是由于license原因。转而使用 videocapture 或者第三方的 PIL 库(Python),但是其实Golang的基础库 image 中就有读取gif图像的。于是一个简单的示例如下 这里只会播放一遍gif图像,我们还可以解析gif中的LoopCount来增加循环播放的逻辑。 读取

    2024年02月12日
    浏览(51)
  • 【Golang中的Go Module使用】

    Golang中的Go Module是一个用于包管理和版本控制的工具。在本文中,我们将深入探讨Go Module的相关知识,包括其定义、使用方法以及一些常见的应用场景。 Go Module是Golang中的包管理和版本控制工具,它的发展历程、用法、意义以及相关指令都对于Golang开发者来说非常重要。在本

    2024年02月16日
    浏览(46)
  • 【GoLang】哪些大公司正在使用Go语言

    前言: 随着计算机科学和软件开发的快速发展,编程语言的选择变得愈加关键。 在这个多元化的编程语境中,Go语言(简称Golang)以其简洁、高效、并发处理能力等特性逐渐受到业界关注。 越来越多的大型科技公司纷纷采用Go语言作为其软件开发的首选语言,这种趋势反映了

    2024年02月04日
    浏览(62)
  • 【Golang】Golang进阶系列教程--为什么 Go 语言 struct 要使用 tags

    在 Go 语言中,struct 是一种常见的数据类型,它可以用来表示复杂的数据结构。在 struct 中,我们可以定义多个字段,每个字段可以有不同的类型和名称。 除了这些基本信息之外,Go 还提供了 struct tags,它可以用来指定 struct 中每个字段的元信息。 在本文中,我们将探讨为什

    2024年02月15日
    浏览(74)
  • golang利用go mod巧妙替换使用本地项目的包

      拉了两个项目下来,其中一个项目依赖另一个项目,因为改动了被依赖的项目,想重新导入测试一下。   go.mod文件的require中想要被代替的包名在replace中进行一个替换,注意:用来替换的需要用绝对路径,一开始我用~/Documents/xboot/xboot/tools/reflect没有效果。   这样原

    2024年02月15日
    浏览(53)
  • golang IDE 使用 go-1.7 无法识别 goroot问题

    当前使用了 golang IDE 要设定 go-1.17 版本作为默认 GOROOT 系统环境变量已经定义好 打开了 ide 会出现下面问题,选择 1.17 后会出现下面报错 The selected directory is not a valid horne for GO SDK 修改 $GOROOT 下文件增加一个变量 再次在 IDC 选择 GOROOT 就可以找到 go 1.17.2 版本 选择后,需要关闭

    2024年02月16日
    浏览(53)
  • 使用OpenCV绘制图形

    绘制黄色的线: 绘制矩形: 绘制圆形: 绘制多边形: 绘制文字:

    2024年01月22日
    浏览(49)
  • CentOS 9 x64 使用 Nginx、Supervisor 部署 Go/Golang 服务

    在 CentOS 9 x64 系统上,可以通过以下步骤来部署 Golang 服务。 安装以下软件包: Golang:Golang 编程语言 Nginx:Web 服务器 Supervisor:进程管理工具 Git:版本控制工具 EPEL:扩展软件包 可以通过以下命令来安装: 为 Git 生成 SSH 密钥,以便于进行代码管理。可以通过以下命令来生成

    2024年02月12日
    浏览(55)
  • 使用OpenCV在图像上绘制质心

    这段代码中已经实现了在图像上绘制质心的功能。质心,也称为重心,是物体质量分布的几何中心,可以通过物体质量和位置的加权平均来求得。 在这个程序中,图像的质心(重心)是通过计算像素强度(可以被看作是“质量”)的加权平均位置得到的。图像上每一个像素都

    2024年02月11日
    浏览(49)
  • 一个golang小白使用vscode搭建Ununtu20.04下的go开发环境

    先交代一下背景,距离正式接触golang这门语言已经有5年时间,平时偶尔也会用go写写工具和功能,但其实充其量就是语言小白,基本上就是按照教程配置好环境,按照需求写写逻辑,能跑起来就行了。golang随着这几年的变化,这门语言的变化还是非常大的,之前写过一篇《

    2024年01月22日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包