Path: blob/master/samples/java/sbt/src/main/scala/ScalaDetectFaceDemo.scala
16354 views
import org.opencv.core.Core1import org.opencv.core.MatOfRect2import org.opencv.core.Point3import org.opencv.core.Scalar4import org.opencv.imgcodecs.Imgcodecs5import org.opencv.imgproc.Imgproc6import org.opencv.objdetect.CascadeClassifier7import reflect._89/*10* Detects faces in an image, draws boxes around them, and writes the results11* to "scalaFaceDetection.png".12*/13object ScalaDetectFaceDemo {14def run() {15println(s"\nRunning ${classTag[this.type].toString.replace("$", "")}")1617// Create a face detector from the cascade file in the resources directory.18val faceDetector = new CascadeClassifier(getClass.getResource("/lbpcascade_frontalface.xml").getPath)19val image = Imgcodecs.imread(getClass.getResource("/AverageMaleFace.jpg").getPath)2021// Detect faces in the image.22// MatOfRect is a special container class for Rect.23val faceDetections = new MatOfRect24faceDetector.detectMultiScale(image, faceDetections)2526println(s"Detected ${faceDetections.toArray.size} faces")2728// Draw a bounding box around each face.29for (rect <- faceDetections.toArray) {30Imgproc.rectangle(31image,32new Point(rect.x, rect.y),33new Point(rect.x + rect.width,34rect.y + rect.height),35new Scalar(0, 255, 0))36}3738// Save the visualized detection.39val filename = "scalaFaceDetection.png"40println(s"Writing ${filename}")41assert(Imgcodecs.imwrite(filename, image))42}43}444546