OpenCV เปเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเบฑเบเบเบฐเบเบฒเบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบเบงเบดเปเบชเบเบฑเบเบเบญเบกเบเบดเบงเปเบเบต. เบเบฒเบเบกเบตเบญเบฒเบเบธเบเบฐเบกเบฒเบ 20 เบเบตเปเบฅเปเบง. เบเปเบญเบเปเบเปเบกเบฑเบเบขเบนเปเปเบเบงเบดเบเบฐเบเบฒเปเบฅเปเบฅเบฐเบเบฑเบเปเบเปเบกเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบ C ++ เปเบฅเบฐ Python เบเบญเบเบเปเบญเบเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบกเบตเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบตเปเบเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบชเบฒเปเบซเบผเบปเปเบฒเบเบฑเปเบ.
เปเบเปเปเบกเบทเปเบญเบเปเบญเบเปเบฅเบตเปเบกเบฎเบฝเบเปเบฅเบฐเปเบเป Go, เบเปเบญเบเบชเบปเบเปเบชเบงเปเบฒ OpenCV เบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบชเบฒเบเบตเป. เปเบโเปเบงโเบฅเบฒโเบเบฑเปเบโเบกเบตโเบเบปเบงโเบขเปเบฒเบโเปเบฅเบฐ tutorials เบเปเบฝเบงโเบเบฑเบโเบเบฒเบโเปเบเบทเปเบญเบกโเปเบเบโเปเบฅเปเบง, เปเบเปโเปเบเบดเปเบโเบเบทโเบงเปเบฒโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบกเบตโเบเบงเบฒเบกโเบชเบฑเบโเบชเบปเบโเปเบเบตเบโเปเบ. เปเปเบญเบเปเบถเปเบ, เบเปเบญเบเปเบเปเบเบปเบเปเบเบทเปเบญเบเบซเปเปเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบเบเบธเปเบกเบฅเบนเบเบเบฐเบชเบปเบก. เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเปเบญเบเบเบฐเบชเบฐเปเบเบเบงเบดเบเบตเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฑเบ GoCV เปเบเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเบฎเบฑเบเบฎเบนเปเปเบเบซเบเปเบฒเปเบเบเบเปเบฒเบเปเบเบฑเบ Haar Cascades.
Skillbox เปเบเบฐเบเปเบฒ: เบซเบผเบฑเบเบชเบนเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ
"เบเบฑเบเบเบฑเบเบเบฐเบเบฒ Python เบเบฑเปเบเปเบเปเปเบฅเบตเปเบกเบเบปเปเบ" .เบเบงเบเปเบฎเบปเบฒเปเบเบทเบญเบ: เบชเปเบฒเบฅเบฑเบเบเบนเปเบญเปเบฒเบเบเบฑเบเบซเบกเบปเบเบเบญเบ "Habr" - เบชเปเบงเบเบซเบผเบธเบ 10 rubles เปเบกเบทเปเบญเบฅเบปเบเบเบฐเบเบฝเบเปเบเบซเบผเบฑเบเบชเบนเบ Skillbox เปเบเบเปเบเปเบฅเบฐเบซเบฑเบเบชเบปเปเบเปเบชเบตเบก "Habr".
เบชเบดเปเบเบเบตเปเบเปเบญเบเบเบฒเบ:
- เปเบ;
- OpenCV (เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบซเบฒเบเบปเบงเบเบดเบเบเบฑเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป);
- web เบซเบผเบทเบเปเบญเบเบเปเบฒเบเบงเบดเบเบตเปเบญเบเบปเบเบเบฐเบเบด.
เบเบฒเบเบเบฑเปเบเบเปเบฒ
- linux:
gocv.io/getting-started/linux - macOS:
gocv.io/getting-started/macos - Windows:
gocv.io/getting-started/windows
เบเบปเบงเบขเปเบฒเบ 1
เปเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฐเบเบฒเบเบฒเบกเบชเปเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเปเบเบตเบเบเปเบญเบเบขเปเบฝเบกเบเบตเปเบกเบตเบเปเปเบฒเบงเบดเบเบตเปเบญเบเปเบญเบเบเปเบฒเบเบฎเบนเบ.
เบเปเบฒเบญเบดเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเปเบเบปเปเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ.
เบเปเบฒเปเบเบปเปเบฒ (
"เบเบฑเบเบเบถเบ"
โgocv.io/x/gocvโ
)
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบงเบฑเบเบเบธ VideoCapture เปเบเบเปเบเปเบเบฑเบเบเบฑเบ VideoCaptureDevice. เบญเบฑเบเบชเบธเบเบเปเบฒเบเปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเบฑเบเบเบถเบเบเบฒเบเบเปเบฒเบเบเบญเบเบงเบดเบเบตเปเบญเปเบเบเปเบเปเบเปเบญเบเบเปเบฒเบเบฎเบนเบ. เบเบฑเบเบเบฑเบเปเบเปเบเบณเบเบงเบเปเบเบฑเบกเปเบเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบต (เบกเบฑเบเบชเบฐเปเบเบเปเบเบดเบ ID เบญเบธเบเบฐเบเบญเบ).
webcam, err := gocv.VideoCaptureDevice(0)
if err != nil { log.Fatalf(โerror opening web cam: %vโ, err)
}
defer webcam.Close()
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบ matrix n-dimensional. เบกเบฑเบเบเบฐเปเบเบฑเบเบฎเบฑเบเบชเบฒเบฎเบนเบเบเบฒเบเบเบตเปเบญเปเบฒเบเบเบฒเบเบเปเบญเบเบเปเบฒเบเบฎเบนเบ.
img := gocv.NewMat()
defer img.Close()
เปเบเบทเปเบญเบชเบฐเปเบเบเบเปเปเบฒเบงเบดเบเบตเปเบญ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบเปเบญเบเบขเปเบฝเบก - เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเปเบเปเบเบฑเบเบเบฑเบ NewWindow.
window := gocv.NewWindow(โwebcamwindowโ)
defer window.Close()
เบเบญเบเบเบตเปเปเบซเปเปเบฎเบปเบฒเบเปเบฒเบงเปเบเบชเบนเปเบชเปเบงเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเบตเปเบชเบธเบ.
เปเบเบทเปเบญเบเบเบฒเบเบงเบดเบเบตเปเบญเปเบเบฑเบเปเบเบฃเบกเบฎเบนเบเบเบฒเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบเบชเปเบฒเบเบงเบปเบเปเบซเบงเบเบเบตเปเบเปเปเบกเบตเบเบญเบเปเบเบเปเบเบทเปเบญเบญเปเบฒเบเบเบฒเบเบเปเบฒเบเบเบญเบเบงเบดเบเบตเปเบญเบเบญเบเบเปเบญเบเบเปเบฒเบเบฎเบนเบเบขเปเบฒเบเบเปเปเบขเบธเบเบขเบฑเปเบ. เบเบตเปเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบงเบดเบเบตเบเบฒเบเบญเปเบฒเบเบเบญเบเบเบฐเปเบเบ VideoCapture. เบกเบฑเบเบเบฐเบเบฒเบเบซเบงเบฑเบเบงเปเบฒเบเบฐเปเบเบ Mat (เบกเบฒเบเบฃเบดเบเปเบเบทเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเปเบฒเบเปเบเบดเบ), เบชเบปเปเบเบเบทเบ boolean เบเบตเปเบเบญเบเบงเปเบฒเบเบญเบเบเบฒเบ VideoCapture เบเบทเบเบญเปเบฒเบเบขเปเบฒเบเบชเปเบฒเปเบฅเบฑเบเบเบปเบเบซเบผเบทเบเปเป.
for {
if ok := webcam.Read(&img); !ok || img.Empty( {
log.Println(โUnable to read from the webcamโ) continue
}
.
.
.
}
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบชเบฐเปเบเบเบเบญเบเบขเบนเปเปเบเบเปเบญเบเบขเปเบฝเบกเบเบตเปเบชเปเบฒเบ. เบขเบธเบเบเบปเปเบงเบเบฒเบงเปเบเบทเปเบญเบเปเบฒเบเปเบเปเบเบฃเบกเบเปเปเปเบ - 50 ms.
window.IMShow(img)
window.WaitKey(50)
เบซเบผเบฑเบโเบเบฒเบโเบเบฒเบโเปเบเบตเบโเบเบปเบงโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโ, เบเปเบญเบโเบขเปเบฝเบกโเบเบตเปโเบกเบตโเบชเบฐโเบโเบฃเบตเบกโเบงเบดโเบเบตโเปเบญโเบเบฒเบโเบเปเบญเบโเบเปเบฒเบโเบฎเบนเบโเบเบฐโเปเบเบตเบโ.
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)
}
}
เบเบปเบงเบขเปเบฒเบ 2
เปเบเบเบปเบงเบขเปเบฒเบเบเบตเป, เปเบซเปเปเบเปเบเบปเบงเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบกเบฒเปเบฅเบฐเบชเปเบฒเบเบฅเบฐเบเบปเบเบเบฒเบเบฎเบฑเบเบฎเบนเปเปเบเบซเบเปเบฒเปเบเบเบญเบตเบเปเบชเป Haar Cascades.
Haar cascades เปเบกเปเบเบเบปเบงเบเบฑเบเบเบฐเปเบเบ cascaded เบเบตเปเปเบเปเบฎเบฑเบเบเบฒเบเบเบถเบเบญเบปเบเบฎเบปเบกเปเบเบเบญเบตเบเปเบชเปเปเบเบฑเบเบเบดเบเบเบฒเบเบเบทเปเบ Haar. เบเบงเบเปเบเบปเบฒเบงเบดเปเบเบฒเบฐ pixels เปเบเบฎเบนเบเบเบฒเบเปเบเบทเปเบญเบเบญเบเบซเบฒเบฅเบฑเบเบชเบฐเบเบฐเบชเบฐเปเบเบฒเบฐ. เปเบเบทเปเบญเบฎเบฝเบเบฎเบนเปเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบ Haar Cascades, เบเบฐเบฅเบธเบเบฒเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเบฒเบเบฅเบธเปเบกเบเบตเป.
เบเบฒเบงเปเบซเบฅเบ cascades เบเบตเปเปเบเปเบฎเบฑเบเบเบฒเบเบเบถเบเบญเบปเบเบฎเบปเบกเปเบฅเปเบง
เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบเบปเบงเบเบฑเบเบเบฐเปเบเบเปเบฅเบฐเปเบซเปเบกเบฑเบเปเบเบฑเบเปเบเบฅเปเบเบตเปเปเบเปเบฎเบฑเบเบเบฒเบเบเบถเบเบญเบปเบเบฎเบปเบกเปเบฅเปเบง (เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบกเปเบเปเบซเปเบเปเบฒเบเปเบเบดเบ). เบเปเบญเบเปเบเปเบญเบฑเบเปเบซเบฅเบเปเบเบฅเป pencv_haarcascade_frontalface_default.xml เปเบเบเบตเปเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบตเปเปเบเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเปเบเบขเบนเป.
harrcascade := โopencv_haarcascade_frontalface_default.xmlโclassifier := gocv.NewCascadeClassifier()classifier.Load(harrcascade)
defer classifier.Close()
เปเบเบทเปเบญเบเบงเบเบซเบฒเปเบเบซเบเปเบฒเปเบเบฎเบนเบเบเบฒเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบงเบดเบเบตเบเบฒเบ
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)
}
}
เปเบฅเบฐ ... เปเบกเปเบเปเบฅเปเบง, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเบญเบญเบ! เบเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบกเบตเบฅเบฐเบเบปเบเบเบฒเบเบฎเบฑเบเบฎเบนเปเปเบเปเปเบฒเปเบเบเบเปเบฒเบเปเบเบตเปเบเบฝเบเปเบ Go. เปเบเบญเบฐเบเบฒเบเบปเบเบญเบฑเบเปเบเปเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบงเบฒเบเปเบเบเบเบตเปเบเบฐเบชเบทเบเบเปเปเบเบฒเบเบเบปเบเบฅเบญเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบฅเบฐเบชเปเบฒเบเบชเบดเปเบเบเบตเปเปเบขเบฑเบเปเบซเบกเปเปเบเบเบเบฒเบเบชเบปเบกเบเบปเบ Go เปเบฅเบฐ OpenCV.
เบเปเบฒเบเปเบฒเบเบชเบปเบเปเบ, เบเบฐเบฅเบธเบเบฒเปเบซเปเบเบฐเปเบเบ
เบเบญเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเปเบฒเบเบเบปเบเบเบงเบฒเบก!
Skillbox เปเบเบฐเบเปเบฒ:
- เบซเบผเบฑเบเบชเบนเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบชเบญเบเบเบต
"เบเปเบญเบเปเบเบฑเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเปเบงเบฑเบ PRO" .- เบซเบผเบฑเบเบชเบนเบเบเบฒเบเบชเบถเบเบชเบฒเบญเบญเบเปเบฅเบเป
"เบเบฑเบเบเบฑเบเบเบฐเบเบฒ Java เบกเบทเบญเบฒเบเบตเบ" .- เบซเบผเบฑเบเบชเบนเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ
"เบเบฑเบเบเบฑเบเบเบฐเบเบฒ PHP เบเบฒเบ 0 เปเบเบดเบ PRO" .
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com