Ratio recognitionis faciei aedificans fundatur in Golang et OpenCV

Ratio recognitionis faciei aedificans fundatur in Golang et OpenCV
OpenCV bibliotheca pro inceptis computatoriis exculta est. Ea iam circiter XX annos nata est. Eo in collegio usus sum et eo adhuc utor pro mea C++ et Pythone inceptis, quod bene adiumentum illis linguis habet.

Sed cum discere coepi et ire utens, miratus sum si OpenCV hac lingua laborari posset. Iam tunc temporis erant exempla et tutelae integrationis, sed nimis multiplex videbatur mihi. Paulo post, involucrum a Group Hybrid creatum veni. In hoc articulo ostendam tibi quomodo incipias cum GoCV per explicandum rationem simplicem faciei agnitionis cum Haar Cascades.

Skillbox commendat: Cursus practicus "Phython elit a VULNUS".

admonemus; omnibus legentibus "Habr" - discount 10 rublorum cum scribendo in quavis Skillbox utens "Habr" codice promotivo.

Quid opus est tibi:

  • Perge;
  • OpenCV (nexiones ad installer infra);
  • telam vel regularem camcorder.

occasum

exempli gratia 1

In primo exemplo conabimur applicationem creare quae fenestram cum camera video amnis aperit.

Primum opus est ut bibliothecas importare quas operari debes.

import(
"log"
"gocv.io/x/gocv"
)

Post hoc, debes creare rem VideoCapture utentem functionem VideoCaptureDevice. Haec efficit ut video torrentem utentem camera capere. Munus integrum ut modulus sumit (repraesentet fabrica ID).

webcam, err := gocv.VideoCaptureDevice(0)
if err != nil {    log.Fatalf(“error opening web cam: %v”, err)
}
defer webcam.Close()

Nunc opus est matricem dimensiva creare. Imagines e camera legetas condo.

img := gocv.NewMat()
defer img.Close()

Ad proponendum rivum video, debes fenestram creare - hoc fieri potest utens functione NewWindow.

window := gocv.NewWindow(“webcamwindow”)
defer window.Close()

Nunc ad partem maxime interesting transeamus.

Cum video continuus torrens imaginis tabulae, opus est ansam infinitam creare ut sine fine rivum video camerae legere. Hoc requirit Read methodum typus VideoCapture. Exspectabit Mat genus (matricem supra creatam) boolean reddens indicans utrum tabulae e VideoCaptura bene lectae sint necne.

for {     
        if ok := webcam.Read(&img); !ok || img.Empty( {
        log.Println(“Unable to read from the webcam”)    continue
     }
.
.
.
}

Nunc opus est tabulam in fenestra creata monstrare. Declina ad proximos artubus movendos — L ma.

window.IMShow (img)
window.WaitKey(50)

Postquam applicationis deductis, fenestra cum video rivulo e camera aperiet.

Ratio recognitionis faciei aedificans fundatur in Golang et OpenCV

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)
}
}

exempli gratia 2

In hoc exemplo utamur exemplo praecedente et ratio agnitionis faciei secundum Haar Cascades aedificet.

Cascades Haar sunt classificatores cascades qui in arte Haar wavelet instructi sunt. Enucleant elementa in imagine quaerendi lineamenta specifica. Ut plura de Haar Cascades discas, nexus infra sequere sis.

Viola-Jones objectum detectionis compage
Cascading classifiers
Haar, sicut pluma

Download iam docta cascades hic. In exemplo currenti, cascades ante faciem hominis recognoscendae erunt.

Ad hoc faciendum, classificatorem creare debes et fasciculum iam exercitatum nutrire (nexus supra datus est). Pencv_haarcascade_frontalface_default.xml tabellam iam imposuisti ad indicem ubi programma nostrum situm est.

harrcascade := “opencv_haarcascade_frontalface_default.xml”classifier := gocv.NewCascadeClassifier()classifier.Load(harrcascade)
defer classifier.Close()

Facies in imagine deprehendere, methodo uti debes DetectMultiScale. Munus hoc accipit replo (typi Mat) quae modo lecta est e camera scriptoris amnis et ordinatam reddit rectanguli speciem. Magnitudo ordinata numerum facierum repraesentat, quem classifier in tabula deprehendere potuit. Deinde, ut certa videamus quid invenerit, iteramus per rectangulorum ordinem et rectangulum objectum ad consolandum imprimamus, terminum circa rectangulum repertum creando. Hoc fieri potest utens munus Rect. Mat lecta per cameram accipiet, objectum Rectanguli per methodum DetectMultiScale redditum, et colorem et crassitudinem pro termino.

for _, r := range rects {
fmt.Println(“detected”, r)
gocv.Rectangle(&img, r, color, 2)
}

Ratio recognitionis faciei aedificans fundatur in Golang et OpenCV

Ratio recognitionis faciei aedificans fundatur in Golang et OpenCV

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)
}
}

Et... ita, omnia elaborata sunt! Nunc habemus simplex ratio recognitionis faciei scripta in Go. In proximo, haec experimenta continuare et novas res frigidas creo componendo Go et OpenCV.

Si interest, quaeso rate gRPC web serverquas scripsi Pythone et OpenCV. Fluit notitia, simulac vultus deprehenditur. Haec basis est ad creandos diversos clientes in variis programmandis linguis. Possunt coniungere servo et notitia ex eo legere.

Gratias legere articulus!

Skillbox commendat:

Source: www.habr.com

Add a comment