OpenCV ndi laibulale yopangidwira ma projekiti apakompyuta. Ali kale ndi zaka 20. Ndidagwiritsa ntchito ku koleji ndikuigwiritsabe ntchito pamapulojekiti anga a C ++ ndi Python chifukwa imathandizidwa bwino ndi zilankhulozo.
Koma nditayamba kuphunzira ndi kugwiritsa ntchito Go, ndidakhala ndi chidwi chofuna kudziwa ngati OpenCV ingagwiritsidwe ntchito chilankhulochi. Panthawiyo, panali kale zitsanzo ndi maphunziro ophatikizana, koma zinkawoneka kwa ine kuti zinali zovuta kwambiri. Patangopita nthawi pang'ono, ndidakumana ndi pepala lopangidwa ndi gulu la The Hybrid Group. M'nkhaniyi, ndikuwonetsani momwe mungayambire ndi GoCV popanga njira yosavuta yodziwira nkhope ndi Haar Cascades.
Skillbox imalimbikitsa: Njira yothandiza
"Wopanga python kuyambira poyambira" .Tikukukumbutsani: kwa owerenga onse a Habr - kuchotsera ma ruble 10 polembetsa maphunziro aliwonse a Skillbox pogwiritsa ntchito nambala yotsatsira ya Habr.
Zofunika:
- Pitani;
- OpenCV (malumikizidwe oyika pansipa);
- web kapena kanema kamera wamba.
kolowera
- Linux:
gocv.io/getting-started/linux - MacOS:
gocv.io/getting-started/macos - Windows:
gocv.io/getting-started/windows
Mwachitsanzo 1
Muchitsanzo choyamba, tidzayesa kupanga pulogalamu yomwe imatsegula zenera lowonetsa kanema wa kanema wa kamera.
Choyamba muyenera kuitanitsa malaibulale ofunikira kuti mugwire ntchito.
itanitsa (
"chipika"
"gocv.io/x/gocv"
)
Pambuyo pake, muyenera kupanga chinthu cha VideoCapture pogwiritsa ntchito ntchito ya VideoCaptureDevice. Chotsatiracho chimapangitsa kuti zitheke kujambula kanema wa kanema pogwiritsa ntchito kamera. Ntchitoyi imagwiritsa ntchito nambala ngati gawo (imayimira ID ya chipangizo).
webcam, err := gocv.VideoCaptureDevice(0)
if err != nil { log.Fatalf(βerror opening web cam: %vβ, err)
}
defer webcam.Close()
Tsopano tiyenera kupanga n-dimensional matrix. Idzasunga zithunzi zowerengedwa kuchokera ku kamera.
img := gocv.NewMat()
defer img.Close()
Kuti muwonetse kanema wa kanema, muyenera kupanga zenera - izi zitha kuchitika pogwiritsa ntchito NewWindow.
window := gocv.NewWindow(βwebcamwindowβ)
defer window.Close()
Tsopano tiyeni tipite ku gawo losangalatsa kwambiri.
Popeza kanema ndi mtsinje wosalekeza wa mafelemu azithunzi, tidzafunika kupanga chipika chopanda malire kuti tiwerenge mosalekeza mavidiyo a kamera. Kuti muchite izi, muyenera Werengani njira ya mtundu wa VideoCapture. Idzayembekezera mtundu wa Mat (matrix omwe tapanga pamwambapa), kubwezera mtengo wa boolean wosonyeza ngati chimango chochokera ku VideoCapture chinawerengedwa bwino kapena ayi.
for {
if ok := webcam.Read(&img); !ok || img.Empty( {
log.Println(βUnable to read from the webcamβ) continue
}
.
.
.
}
Tsopano muyenera kusonyeza chimango mu analenga zenera. Kuima kwa kusunthira ku chimango china ndi 50 ms.
window.IMShow(img)
zenera.WaitKey(50)
Pambuyo poyambitsa pulogalamuyi, zenera lokhala ndi kanema kuchokera ku kamera lidzatsegulidwa.
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)
}
}
Mwachitsanzo 2
Muchitsanzo ichi, tiyeni tigwiritse ntchito chitsanzo cham'mbuyomu ndikupanga mawonekedwe ozindikira nkhope potengera Haar Cascades.
Ma cascades a Haar ndi magulu a cascade omwe amaphunzitsidwa pogwiritsa ntchito njira ya Haar wavelet. Amasanthula ma pixel pachithunzi kuti adziwe zina. Kuti mudziwe zambiri za Haar Cascades, chonde tsatirani maulalo omwe ali pansipa.
Tsitsani makaseti ophunzitsidwa kale
Kuti muchite izi, muyenera kupanga classifier ndikudyetsa fayilo yophunzitsidwa kale (ulalo waperekedwa pamwambapa). Ndakweza kale fayilo ya pencv_haarcascade_frontalface_default.xml kumalo komwe pulogalamu yathu ili.
harrcascade := βopencv_haarcascade_frontalface_default.xmlβclassifier := gocv.NewCascadeClassifier()classifier.Load(harrcascade)
defer classifier.Close()
Kuti muzindikire nkhope mu chithunzi, muyenera kugwiritsa ntchito njirayo
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)
}
}
Ndipo ... inde, zonse zinayenda bwino! Tsopano tili ndi njira yosavuta yozindikiritsa nkhope yolembedwa mu Go. Posachedwa ndikukonzekera kupitiliza zoyesererazi ndikupanga zinthu zatsopano zoziziritsa kukhosi pophatikiza Go ndi OpenCV.
Ngati mukufuna, chonde perekani
Zikomo powerenga nkhaniyi!
Skillbox imalimbikitsa:
- Zaka ziwiri zothandiza maphunziro
"Ndine wopanga mawebusayiti a PRO" .- Maphunziro aulere pa intaneti
"Professional Java developer" .- Maphunziro othandiza a chaka chimodzi
"Wopanga PHP kuchokera ku 0 kupita ku PRO" .
Source: www.habr.com