Fausia se faiga e iloagofie ai foliga e fa'avae ile Golang ma OpenCV
O le OpenCV ose faletusi ua fa'atulagaina mo galuega fa'atino va'ai komepiuta. Ua tusa nei ma le 20 tausaga o lona matua. Na ou faʻaaogaina i le kolisi ma faʻaaoga pea mo aʻu galuega C++ ma Python aua e lelei le lagolago mo na gagana.
Ae ina ua amata ona ou aʻoaʻoina ma faʻaaoga le Go, na amata ona ou fiafia pe mafai ona faʻaoga OpenCV e galue ai i lenei gagana. I lena taimi, ua uma ona i ai ni faʻataʻitaʻiga ma aʻoaʻoga i le tuʻufaʻatasia, ae na foliga mai ia te aʻu e faigata tele. I se taimi mulimuli ane, na ou tau atu ai i se afifi na faia e le vaega o le Hybrid Group. I lenei tusiga, o le a ou faʻaali atu ia te oe le auala e amata ai i le GoCV e ala i le atinaʻeina o se faiga faigofie e iloa ai foliga ma Haar Cascades.
Matou te faʻamanatu atu ia te oe:mo tagata faitau uma o le "Habr" - o se faʻaitiitiga o 10 rubles pe a lesitala i soʻo se vasega Skillbox e faʻaaoga ai le code promotional "Habr".
I le faʻataʻitaʻiga muamua, o le a matou taumafai e fai se talosaga e tatalaina ai se faʻamalama e faʻaalia ai se ata vitio vitio.
Muamua e tatau ona e fa'aulufale mai faletusi e mana'omia mo le galuega.
faaulufale mai (
“loga”
“gocv.io/x/gocv”
)
A maeʻa lenei mea, e tatau ona e fatuina se mea VitioCapture e faʻaaoga ai le galuega VideoCaptureDevice. O le mea mulimuli e mafai ai ona pu'eina se ata vitio e fa'aaoga ai se meapueata. E fa'aaogaina e le galuega le numera atoa e fai ma parakalafa (o lo'o fa'atusalia ai le ID masini).
webcam, err := gocv.VideoCaptureDevice(0)
if err != nil { log.Fatalf(“error opening web cam: %v”, err)
}
defer webcam.Close()
Ole taimi nei e mana'omia ona tatou faia se matrix n-dimensional. O le a teuina ata faitau mai le meapueata.
img := gocv.NewMat()
defer img.Close()
Ina ia faʻaalia se ata vitio, e tatau ona e fatuina se faamalama - e mafai ona faia lenei mea e faʻaaoga ai le galuega NewWindow.
Se'i o tatou agai atu nei i le vaega e sili ona manaia.
Talu ai o le vitio o se tafega faifaipea o faʻavaa ata, e manaʻomia ona tatou fatuina se matasele e le gata e faitau ai e le uma le ata vitio a le meapueata. Ina ia faia lenei mea, e te manaʻomia le Faitau metotia o le ituaiga VideoCapture. O le a faʻamoemoeina se ituaiga Mat (le matrix na matou faia i luga), toe faʻafoʻi mai le tau o le boolean e faʻaalia ai pe na faitau manuia le faʻavaa mai le VideoCapture pe leai.
for {
if ok := webcam.Read(&img); !ok || img.Empty( {
log.Println(“Unable to read from the webcam”) continue
}
.
.
.
}
Ole taimi nei e tatau ona e faʻaalia le faʻavaa i le faamalama na faia. O le malolo mo le agai i le isi faavaa e 50 ms.
faamalama.IMSshow(img)
faamalama.WaitKey(50)
A maeʻa le faʻalauiloaina o le talosaga, o le a tatalaina se faʻamalama ma se vitio mai le mea pueata.
package main
import (
"log"
"gocv.io/x/gocv"
)
func main() {
webcam, err := gocv.VideoCaptureDevice(0)
if err != nil {
log.Fatalf("error opening device: %v", err)
}
defer webcam.Close()
img := gocv.NewMat()
defer img.Close()
window := gocv.NewWindow("webcamwindow")
defer window.Close()
for {
if ok := webcam.Read(&img); !ok || img.Empty() {
log.Println("Unable to read from the webcam")
continue
}
window.IMShow(img)
window.WaitKey(50)
}
}
faataitaiga 2
I lenei faʻataʻitaʻiga, tatou faʻaoga le faʻataʻitaʻiga muamua ma fausia se faiga faʻaalia foliga e faʻavae i luga o Haar Cascades.
Haar cascades o cascade classifiers o loʻo aʻoaʻoina i le faʻaogaina o le Haar wavelet technique. Latou te suʻesuʻeina pixels i se ata e iloa ai nisi o foliga. Mo nisi fa'amatalaga e uiga i Haar Cascades, fa'amolemole mulimuli i so'oga i lalo.
La'u mai i lalo cascade ua uma ona a'oa'oina mafai ona i ai. I le faʻataʻitaʻiga o loʻo i ai nei, o le a faʻaaogaina cascade e iloa ai foliga o se tagata mai luma.
Ina ia faia lenei mea, e tatau ona e fatuina se faʻavasegaina ma fafaga i se faila ua uma ona aʻoaʻoina (o loʻo tuʻuina atu le sootaga i luga). Ua uma ona ou lafoina le pencv_haarcascade_frontalface_default.xml faila i le lisi o loʻo i ai le matou polokalame.
Ina ia iloa foliga i se ata, e tatau ona e faʻaogaina le auala Su'esu'e Fa'atele. O lenei galuega e ave ai se faavaa (ituaiga Mat) lea faatoa faitau mai le ata vitio a le meapueata ma toe faafoi mai ai se vaega o ituaiga Rectangle. Ole lapo'a fa'atusa o lo'o fa'atusalia ai le aofa'i o foliga na mafai e le fa'avasegaga ona iloa ile fa'avaa. Ma, ina ia mautinoa tatou te vaʻai i mea na maua, seʻi o tatou faʻasolosolo i le lisi o rectangles ma lolomi le Rectangle mea i le faʻamafanafanaga, faia se tuaoi faataamilo i le rectangle iloa. E mafai ona faia lenei mea i le faʻaaogaina o le Rectangle function. O le a talia le Mat faitau e le mea pueata, o le Rectangle mea na toe faafoi mai e le DetectMultiScale metotia, le lanu ma le mafiafia mo le tuaoi.
for _, r := range rects {
fmt.Println(“detected”, r)
gocv.Rectangle(&img, r, color, 2)
}
package main
import (
"fmt"
"image/color"
"log"
"gocv.io/x/gocv"
)
func main() {
webcam, err := gocv.VideoCaptureDevice(0)
if err != nil {
log.Fatalf("error opening web cam: %v", err)
}
defer webcam.Close()
img := gocv.NewMat()
defer img.Close()
window := gocv.NewWindow("webcamwindow")
defer window.Close()
harrcascade := "opencv_haarcascade_frontalface_default.xml"
classifier := gocv.NewCascadeClassifier()
classifier.Load(harrcascade)
defer classifier.Close()
color := color.RGBA{0, 255, 0, 0}
for {
if ok := webcam.Read(&img); !ok || img.Empty() {
log.Println("Unable to read from the device")
continue
}
rects := classifier.DetectMultiScale(img)
for _, r := range rects {
fmt.Println("detected", r)
gocv.Rectangle(&img, r, color, 3)
}
window.IMShow(img)
window.WaitKey(50)
}
}
Ma... ioe, sa lelei mea uma! Ua i ai nei se faiga faigofie e iloagofie ai foliga ua tusia i le Go. E le o toe mamao ae ou fuafua e faʻaauau nei faʻataʻitaʻiga ma faia ni mea manaia fou e ala i le tuʻufaʻatasia o Go ma OpenCV.
Afai e te fiafia, faamolemole fua mai gRPC web server, lea na ou tusia i le Python ma OpenCV. E fa'asalalau fa'amaumauga i le taimi e iloa ai se foliga. O le fa'avae lea mo le fatuina o tagata fa'atau eseese i gagana fa'apolokalame eseese. O le a mafai ona latou faʻafesoʻotaʻi i le 'auʻaunaga ma faitau faʻamatalaga mai ai.