
OpenCV āĻšāϞ āĻāĻāĻāĻŋ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āϝāĻž āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰ āĻāĻŋāĻļāύ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāύā§āϝ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āϤāĻŋāύāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻĒā§āϰāĻžāϝāĻŧ 20 āĻŦāĻāϰ āĻŦāϝāĻŧāϏā§. āĻāĻŽāĻŋ āĻāĻāĻŋ āĻāϞā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ āĻāĻŦāĻ āĻāĻāύāĻ āĻāĻāĻŋ āĻāĻŽāĻžāϰ C++ āĻāĻŦāĻ āĻĒāĻžāĻāĻĨāύ āĻĒā§āϰāĻāϞā§āĻĒāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ āĻāĻžāϰāĻŖ āĻāĻāĻŋ āϏā§āĻ āĻāĻžāώāĻžāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāĻžāϞ āϏāĻŽāϰā§āĻĨāύ āϰāϝāĻŧā§āĻā§āĨ¤
āĻāĻŋāύā§āϤ⧠āϝāĻāύ āĻāĻŽāĻŋ āĻļā§āĻāĻž āĻāĻŦāĻ Go āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻļā§āϰ⧠āĻāϰāĻŋ, āϤāĻāύ āĻāĻŽāĻŋ āĻāĻ āĻāĻžāώāĻžāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ OpenCV āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāϝāĻŧ āĻāĻŋāύāĻž āϤāĻž āύāĻŋāϝāĻŧā§ āĻāĻā§āϰāĻšā§ āĻšāϝāĻŧā§ āĻāĻ āĻŋāĨ¤ āϏā§āĻ āϏāĻŽāϝāĻŧā§, āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻāĻā§āĻāϰāĻŖā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻāĻŦāĻ āĻāĻŋāĻāĻā§āϰāĻŋāϝāĻŧāĻžāϞ āĻāĻŋāϞ, āĻāĻŋāύā§āϤ⧠āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻŽāύ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ āϝ⧠āϏā§āĻā§āϞāĻŋ āĻā§āĻŦ āĻāĻāĻŋāϞ āĻāĻŋāϞāĨ¤ āĻāĻāĻā§ āĻĒāϰā§, āĻāĻŽāĻŋ āĻšāĻžāĻāĻŦā§āϰāĻŋāĻĄ āĻā§āϰā§āĻĒ āĻāĻŋāĻŽā§āϰ āϤā§āϰāĻŋ āĻāĻāĻāĻŋ āĻŽā§āĻĄāĻŧāĻ āĻĻā§āĻāϤ⧠āĻĒā§āϞāĻžāĻŽāĨ¤ āĻāĻ āύāĻŋāĻŦāύā§āϧā§, āĻāĻŽāĻŋ āĻāĻĒāύāĻžāĻā§ āĻĻā§āĻāĻžāĻŦ āĻāĻŋāĻāĻžāĻŦā§ GoCV-āĻāϰ āϏāĻžāĻĨā§ āĻļā§āϰ⧠āĻāϰāĻž āϝāĻžāϝāĻŧ Haar Cascades-āĻāϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŽā§āĻ āĻļāύāĻžāĻā§āϤāĻāϰāĻŖ āϏāĻŋāϏā§āĻā§āĻŽ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
Skillbox āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻāϰā§: āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻā§āϰā§āϏ .
āĻāĻŽāϰāĻž āĻŽāύ⧠āĻāϰāĻŋāϝāĻŧā§ āĻĻāĻŋāĻā§āĻāĻŋ: "Habr"-āĻāϰ āϏāĻāϞ āĻĒāĻžāĻ āĻāĻĻā§āϰ āĻāύā§āϝ - "Habr" āĻĒā§āϰāĻāĻžāϰāĻŽā§āϞāĻ āĻā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϝā§āĻā§āύ⧠Skillbox āĻā§āϰā§āϏ⧠āύāĻĨāĻŋāĻā§āĻā§āϤ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ 10 āϰā§āĻŦā§āϞ āĻāĻžāĻĄāĻŧāĨ¤
āĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύ:
- āϝāĻžāĻāϝāĻŧāĻž;
- OpenCV (āύāĻŋāĻā§ āĻāύāϏā§āĻāϞāĻžāϰ āϞāĻŋāĻā§āĻ);
- āĻāϝāĻŧā§āĻŦ āĻŦāĻž āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻāĻŋāĻĄāĻŋāĻ āĻā§āϝāĻžāĻŽā§āϰāĻžāĨ¤
āĻŦāĻŋāύā§āϝāĻžāϏ
- Linux:
- macOS:
- Windows:
āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ 1
āĻĒā§āϰāĻĨāĻŽ āĻāĻĻāĻžāĻšāϰāĻŖā§, āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻŦ āϝāĻž āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻŽā§āϰāĻž āĻāĻŋāĻĄāĻŋāĻ āϏā§āĻā§āϰāĻŋāĻŽ āĻĻā§āĻāĻžāύ⧠āĻāĻāĻāĻŋ āĻāĻāύā§āĻĄā§ āĻā§āϞā§āĨ¤
āĻĒā§āϰāĻĨāĻŽā§ āĻāĻĒāύāĻžāĻā§ āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻā§āϞāĻŋ āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻŽāĻĻāĻžāύāĻŋ (
"āϞāĻ"
"gocv.io/x/gocv"
)
āĻāϰ āĻĒāϰā§, āĻāĻĒāύāĻžāĻā§ VideoCaptureDevice āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ VideoCapture āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻĒāϰā§āϰāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻŽā§āϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āĻāĻŋāĻĄāĻŋāĻ āϏā§āĻā§āϰāĻŋāĻŽ āĻā§āϝāĻžāĻĒāĻāĻžāϰ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ āĻāϰ⧠āϤā§āϞā§āĨ¤ āĻĢāĻžāĻāĻļāύ āĻāĻāĻāĻŋ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŖāϏāĻāĻā§āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠(āĻāĻāĻŋ āĻĄāĻŋāĻāĻžāĻāϏ āĻāĻāĻĄāĻŋ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋāϤā§āĻŦ āĻāϰā§)āĨ¤
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()āĻāĻāύ āϏāĻŦāĻā§āϝāĻŧā§ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āĻ āĻāĻļā§ āϝāĻžāĻāϝāĻŧāĻž āϝāĻžāĻāĨ¤
āϝā§āĻšā§āϤ⧠āĻāĻŋāĻĄāĻŋāĻ āĻšāϞ āĻāĻŽā§āĻ āĻĢā§āϰā§āĻŽā§āϰ āĻāĻāĻāĻŋ āĻā§āϰāĻŽāĻžāĻāϤ āϏā§āĻā§āϰāĻŋāĻŽ, āϤāĻžāĻ āĻā§āϝāĻžāĻŽā§āϰāĻžāϰ āĻāĻŋāĻĄāĻŋāĻ āϏā§āĻā§āϰā§āĻŽ āĻ āĻŦāĻŋāϰāĻžāĻŽ āĻĒāĻĄāĻŧāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻāĻŋ āĻ āϏā§āĻŽ āϞā§āĻĒ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāϰ āĻāĻŋāĻĄāĻŋāĻ āĻā§āϝāĻžāĻĒāĻāĻžāϰ āĻāĻžāĻāĻĒā§āϰ āϰāĻŋāĻĄ āĻĒāĻĻā§āϧāϤāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŽā§āϝāĻžāĻ āĻāĻžāĻāĻĒ (āĻāĻŽāϰāĻž āĻāĻĒāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻŽā§āϝāĻžāĻā§āϰāĻŋāĻā§āϏ) āĻāĻļāĻž āĻāϰāĻŦā§, āĻāĻŋāĻĄāĻŋāĻāĻā§āϝāĻžāĻĒāĻāĻžāϰ āĻĨā§āĻā§ āĻĢā§āϰā§āĻŽāĻāĻŋ āϏāĻĢāϞāĻāĻžāĻŦā§ āĻĒāĻĄāĻŧāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŋāύāĻž āϤāĻž āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āĻāĻāĻāĻŋ āĻŦā§āϞāĻŋāϝāĻŧāĻžāύ āĻŽāĻžāύ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āĻŦā§āĨ¤
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
āĻāĻ āĻāĻĻāĻžāĻšāϰāĻŖā§, āĻāĻā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāĻ āĻāĻŦāĻ āĻšāĻžāϰ āĻā§āϝāĻžāϏāĻā§āĻĄā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻ āĻļāύāĻžāĻā§āϤāĻāϰāĻŖ āϏāĻŋāϏā§āĻā§āĻŽ āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻžāĻāĨ¤
āĻšāĻžāϰ āĻā§āϝāĻžāϏāĻā§āĻĄ āĻšāϞ āĻā§āϝāĻžāϏāĻā§āĻĄ āĻā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϝāĻž āĻšāϰ āĻāϝāĻŧā§āĻāϞā§āĻ āĻā§āĻļāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰāĻļāĻŋāĻā§āώāĻŋāϤ āĻšāϝāĻŧāĨ¤ āϤāĻžāϰāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϏāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻāĻāĻāĻŋ āĻāĻŦāĻŋāϤ⧠āĻĒāĻŋāĻā§āϏā§āϞ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻāϰā§āĨ¤ āĻšāĻžāϰ āĻā§āϝāĻžāϏāĻā§āĻĄāϏ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻāĻžāύāϤā§, āĻ āύā§āĻā§āϰāĻš āĻāϰ⧠āύā§āĻā§āϰ āϞāĻŋāĻā§āĻāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύāĨ¤
āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻĒā§āϰāĻļāĻŋāĻā§āώāĻŋāϤ āĻā§āϝāĻžāϏāĻā§āĻĄ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰā§āύ . āĻŦāϰā§āϤāĻŽāĻžāύ āĻāĻĻāĻžāĻšāϰāĻŖā§, āĻā§āϝāĻžāϏāĻā§āĻĄāĻā§āϞāĻŋ āϏāĻžāĻŽāύ⧠āĻĨā§āĻā§ āĻāĻāĻāύ āĻŦā§āϝāĻā§āϤāĻŋāϰ āĻŽā§āĻ āϏāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāĻŦā§āĨ¤
āĻāĻāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āĻā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻĒā§āϰāĻļāĻŋāĻā§āώāĻŋāϤ āĻĢāĻžāĻāϞ āĻāĻžāĻāϝāĻŧāĻžāϤ⧠āĻšāĻŦā§ (āϞāĻŋāĻā§āĻāĻāĻŋ āĻāĻĒāϰ⧠āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§)āĨ¤ āĻāĻŽāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ 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 āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻāϰā§:
- āĻĻā§āĻ āĻŦāĻāϰā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻā§āϰā§āϏ .
- āĻļāĻŋāĻā§āώāĻžāĻāϤ āĻ āύāϞāĻžāĻāύ āĻā§āϰā§āϏ .
- āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻŦāĻāϰā§āϰ āĻā§āϰā§āϏ .
āĻāϤā§āϏ: www.habr.com
