OpenCV iraibhurari yakagadzirirwa mapurojekiti ekuona komputa. Atova nemakore anenge makumi maviri. Ndakaishandisa kukoreji uye ndichiri kuishandisa kune yangu C ++ nePython mapurojekiti nekuti ine rutsigiro rwakanaka kumitauro iyoyo.
Asi pandakatanga kudzidza nekushandisa Go, ndakafarira kuziva kana OpenCV ingashandiswa kushanda nemutauro uyu. Panguva iyoyo, pakanga patove nemienzaniso uye zvidzidzo zvekubatanidza, asi zvaiita sekuti zvainge zvakanyanya kuomarara. Kwapera chinguva, ndakasangana nekapeta yakagadzirwa neThe Hybrid Group timu. Muchikamu chino, ini ndinokuratidza maitiro ekutanga neGoCV nekugadzira yakapusa yekuziva chiso system neHaar Cascades.
Skillbox inokurudzira: Nzira inoshanda
"Python developer kubva pakutanga" .Tinoyeuchidza: kune vese vaverengi veHabr - a 10 ruble mutengo paunenge uchinyoresa mune chero Skillbox kosi uchishandisa iyo Habr promo kodhi.
Chii chinodiwa:
- Go;
- OpenCV (zvisungo zvinongedzo pazasi);
- web kana yenguva dzose vhidhiyo kamera.
Kuiswa
- Linux:
gocv.io/getting-started/linux - macOS:
gocv.io/getting-started/macos - Windows:
gocv.io/getting-started/windows
muenzaniso 1
Mumuenzaniso wekutanga, isu tichaedza kugadzira application inovhura hwindo rinoratidza kamera vhidhiyo kuyerera.
Kutanga unofanira kupinza kunze maraibhurari anodiwa kubasa.
kunze (
"log"
"gocv.io/x/gocv"
)
Mushure meizvi, unofanirwa kugadzira chinhu cheVideoCapture uchishandisa VideoCaptureDevice basa. Iyo yekupedzisira inoita kuti zvikwanise kutora vhidhiyo rwizi uchishandisa kamera. Basa racho rinoshandisa nhamba yakakwana separameter (inomiririra ID yemudziyo).
webcam, err := gocv.VideoCaptureDevice(0)
if err != nil { log.Fatalf(βerror opening web cam: %vβ, err)
}
defer webcam.Close()
Iye zvino tinoda kugadzira n-dimensional matrix. Ichachengeta mifananidzo yakaverengwa kubva pakamera.
img := gocv.NewMat()
defer img.Close()
Kuti uratidze kuyerera kwevhidhiyo, unofanirwa kugadzira hwindo - izvi zvinogona kuitwa uchishandisa iyo NewWindow basa.
window := gocv.NewWindow(βwebcamwindowβ)
defer window.Close()
Zvino ngatiendei kune chikamu chinonyanya kufadza.
Sezvo vhidhiyo iri kuenderera mberi kwemafuremu emifananidzo, isu tichada kugadzira isingaperi loop kuti tiverenge nekusingaperi vhidhiyo yekhamera. Kuti uite izvi, unoda nzira yeKuverenga yemhando yeVideoCapture. Inotarisira mhando yeMat (matrix yatakagadzira pamusoro), ichidzosa kukosha kweboolean kuratidza kana furemu kubva kuVideoCapture yakaverengwa zvakabudirira kana kwete.
for {
if ok := webcam.Read(&img); !ok || img.Empty( {
log.Println(βUnable to read from the webcamβ) continue
}
.
.
.
}
Iye zvino unoda kuratidza furemu muhwindo rakagadzirwa. Kumbomira kwekuenda kune inotevera furemu ndeye 50 ms.
window.IMShow(img)
hwindo.WaitKey(50)
Mushure mekutangisa application, hwindo rine vhidhiyo rwizi kubva kamera rinovhura.
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)
}
}
muenzaniso 2
Mumuenzaniso uyu, ngatishandisei muenzaniso wekare uye tivake hurongwa hwekuzivikanwa kumeso kwakavakirwa paHaar Cascades.
Haar cascades ndeye cascade classifiers vanodzidziswa vachishandisa nzira yeHaar wavelet. Vanoongorora mapikseli mumufananidzo kuti vaone zvimwe zvinhu. Kuti uzive zvakawanda nezve Haar Cascades, ndapota tevera zvinongedzo pazasi.
Dhaunirodha macascades akatodzidziswa
Kuti uite izvi, unofanirwa kugadzira classifier uye kuidyisa iyo yakatodzidziswa faira (iyo link inopiwa pamusoro). Ndakatoisa pencv_haarcascade_frontalface_default.xml faira kudhairekitori uko chirongwa chedu chiripo.
harrcascade := βopencv_haarcascade_frontalface_default.xmlβclassifier := gocv.NewCascadeClassifier()classifier.Load(harrcascade)
defer classifier.Close()
Kuti uone zviso mumufananidzo, unofanirwa kushandisa nzira
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)
}
}
Uye ... hongu, zvose zvakashanda! Isu tave nemaitiro akareruka ekuzivikanwa kwechiso akanyorwa muGo. Munguva pfupi ini ndinoronga kuenderera mberi nekuyedza uye kugadzira zvinhu zvitsva zvinotonhorera nekubatanidza Go uye OpenCV.
Kana uchifarira, ndapota reta
Ndinokutendai nokuverenga nyaya yacho!
Skillbox inokurudzira:
- Makore maviri anoshanda kosi
"Ini ndiri PRO webhu developer" .- Dzidzo yepamhepo kosi
"Professional Java developer" .- Kosi yegore rimwechete
"PHP mugadziri kubva 0 kusvika PRO" .
Source: www.habr.com