本文將向你展示如何使用 OpenCV 使用 Go 編程語言 (Golang) 和 GoCV 包繪制直線、正方形、圓形和橢圓形對象。
OpenCV是一個主要用于實時計算機視覺的編程函數(shù)庫。最初由 Intel 開發(fā),然后由 Willow Garage 和 Itseez 提供支持。這個庫是跨平臺的,可以在開源 Apache 2 許可下免費使用。
除了繪制物體,OpenCV還可以用于人臉檢測、運動跟蹤等。
GoCV 是Golang語言的一個包,支持 Linux、macOS 和 Windows 上最新版本的 Go 和 OpenCV v4.5.4。GoCV 使 Go 語言成為兼容 OpenCV 生態(tài)系統(tǒng)最新發(fā)展的“一流”客戶端。
GoCV 讓 golang 程序員可以訪問 OpenCV4 計算機視覺庫。
要求
安裝 Golang(確保目標操作系統(tǒng)與你的計算機匹配)
安裝 OpenCV
安裝 OpenCV
有關安裝 OpenCV 的指南,你可以打開 GoCV 網(wǎng)站上的文檔,網(wǎng)址為:https://gocv.io/
macOS 安裝:https://gocv.io/getting-started/macos/
在 Linux 上安裝:https://gocv.io/getting-started/linux/
Windows 安裝程序:https://gocv.io/getting-started/windows/
或者你可以在此處(https://opencv.org/)訪問官方網(wǎng)站。我們使用 MacOs 操作系統(tǒng)。
創(chuàng)建項目
首先,讓我們使用以下命令創(chuàng)建一個新項目:
mkdir?belajar-gocv
cd?belajar-gocv
然后使用以下命令創(chuàng)建一個模塊:
go?mod?init?belajar-gocv
使用另一個 IDE 或編輯器打開項目,例如 VSCode。在根目錄中創(chuàng)建一個名為main.go的文件,接下來我們將創(chuàng)建一個繪制對象的函數(shù)。
package?main
func?main()?{
??//?buat?canvas
}
安裝庫
安裝包 GoCV
go?get?-u?-d?gocv.io/x/gocv
使用 OpenCV 繪制對象
使用 OpenCV 除了可以提高圖像或視頻的圖像質(zhì)量外,還可以用于繪制和寫入對象。
創(chuàng)建畫布
打開main.go然后在 main 函數(shù)中更改/添加以下代碼:
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
出現(xiàn)一個黑色的空白窗口

新窗口
按鍵盤上的 esc 鍵關閉窗口。
制作顏色
首先我們準備要在對象上使用的顏色。打開main.go在創(chuàng)建畫布后添加以下行
//?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
...
畫線
成功創(chuàng)建畫布后,接下來我們嘗試用線(line)繪制畫布。在畫線之前,我們必須了解畫線所用的函數(shù)和屬性。用來畫線的函數(shù)結構和屬性如下:
gocv.Line(img?*gocv.Mat,?pt1?image.Point,?pt2?image.Point,?c?color.RGBA,?thickness?int)
img = 用于指定使用內(nèi)存地址引用繪制線條的位置
pt1 = (x1, y1) 創(chuàng)建線的第一個點的起始坐標
pt2 = (x2, y2) 結束坐標創(chuàng)建直線的終點
c = (color) 一個介于 0-255 之間的值,用于創(chuàng)建 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
所以結果會是這樣:

創(chuàng)建一個正方形
要創(chuàng)建的第二個對象是一個正方形。
gocv.Rectangle(img?*gocv.Mat,?r?image.Rectangle,?c?color.RGBA,?thickness?int)
img:用于通過引用其內(nèi)存地址來指定矩形將在何處繪制
r = (x0, y0, x1, y1) :x0和y0是正方形左上角的坐標,x1和y1是正方形右下角的坐標
c = (color) :一個介于 0-255 之間的值,用于創(chuàng)建 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
所以結果會是這樣:

創(chuàng)建一個圓
gocv.Circle(img?*gocv.Mat,?center?image.Point,?radius?int,?c?color.RGBA,?thickness?int)
img = 用于指定使用其內(nèi)存地址引用繪制圓的位置
center = (x, y) 表示圓在x和y軸上的圓心
radius = 表示圓的半徑(面積)
c = (color) 一個介于 0-255 之間的值,用于創(chuàng)建 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
所以結果會是這樣的:

創(chuàng)建一個橢圓
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,橢圓的旋轉(zhuǎn)角度是逆時針計算的
startAngle = 開始角度(順時針數(shù))
endAngel = 結束角度(順時針數(shù))
c = (color) 一個介于 0-255 之間的值,用于創(chuàng)建 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
所以結果會是這樣:

源代碼
https://github.com/apriliantocecep/belajar-gocv
☆ END ☆
如果看到這里,說明你喜歡這篇文章,請轉(zhuǎn)發(fā)、點贊。微信搜索「uncle_pn」,歡迎添加小編微信「 woshicver」,每日朋友圈更新一篇高質(zhì)量博文。文章來源:http://www.zghlxwxcb.cn/news/detail-470130.html
↓掃描二維碼添加小編↓文章來源地址http://www.zghlxwxcb.cn/news/detail-470130.html
到了這里,關于使用 Go (Golang) 使用 OpenCV 繪制對象 GoCV的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!