{"id":3339,"date":"2021-07-23T09:42:26","date_gmt":"2021-07-23T09:42:26","guid":{"rendered":"https:\/\/www.bearloga.space\/?page_id=3339"},"modified":"2021-07-23T09:42:26","modified_gmt":"2021-07-23T09:42:26","slug":"opencv-raspoznavanie-licz-s-pomoshhyu-kamery","status":"publish","type":"page","link":"https:\/\/www.bearloga.space\/uk\/opencv-raspoznavanie-licz-s-pomoshhyu-kamery\/","title":{"rendered":"OpenCV \u2014 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u043b\u0438\u0446 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u0430\u043c\u0435\u0440\u044b"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u043b\u0438\u0446\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0435\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043a\u043d\u0430 JavaFX.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u043f\u0440\u0438\u043c\u0435\u0440<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">import java.awt.image.BufferedImage;\nimport java.awt.image.DataBufferByte;\nimport java.awt.image.WritableRaster;\n\nimport java.io.FileNotFoundException;\nimport java.io.IOException;\n\nimport javafx.application.Application;\nimport javafx.embed.swing.SwingFXUtils;\nimport javafx.scene.Group;\nimport javafx.scene.Scene;\nimport javafx.scene.image.ImageView;\nimport javafx.scene.image.WritableImage;\nimport javafx.stage.Stage;\n\nimport org.opencv.core.Core;\nimport org.opencv.core.Mat;\nimport org.opencv.core.MatOfRect;\nimport org.opencv.core.Point;\nimport org.opencv.core.Rect;\nimport org.opencv.core.Scalar;\nimport org.opencv.imgcodecs.Imgcodecs;\nimport org.opencv.imgproc.Imgproc;\nimport org.opencv.objdetect.CascadeClassifier;\nimport org.opencv.videoio.VideoCapture;\n\npublic class faceDetectionJavaFXX extends Application {\n   Mat matrix = null;\n\n   @Override\n   public void start(Stage stage) throws FileNotFoundException, IOException {\n      \/\/ Capturing the snapshot from the camera\n      faceDetectionJavaFXX obj = new faceDetectionJavaFXX();\n      WritableImage writableImage = obj.capureFrame();\n\n      \/\/ Saving the image\n      obj.saveImage();\n\n      \/\/ Setting the image view\n      ImageView imageView = new ImageView(writableImage);\n\n      \/\/ setting the fit height and width of the image view\n      imageView.setFitHeight(400);\n      imageView.setFitWidth(600);\n\n      \/\/ Setting the preserve ratio of the image view\n      imageView.setPreserveRatio(true);\n\n      \/\/ Creating a Group object\n      Group root = new Group(imageView);\n\n      \/\/ Creating a scene object\n      Scene scene = new Scene(root, 600, 400);\n\n      \/\/ Setting title to the Stage\n      stage.setTitle(\"Capturing an image\");\n\n      \/\/ Adding scene to the stage\n      stage.setScene(scene);\n\n      \/\/ Displaying the contents of the stage\n      stage.show();\n   }\n   public WritableImage capureFrame() {\n      WritableImage writableImage = null;\n\n      \/\/ Loading the OpenCV core library\n      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );\n\n      \/\/ Instantiating the VideoCapture class (camera:: 0)\n      VideoCapture capture = new VideoCapture(0);\n\n      \/\/ Reading the next video frame from the camera\n      Mat matrix = new Mat();\n      capture.read(matrix);\n\n      \/\/ If camera is opened\n      if(!capture.isOpened()) {\n         System.out.println(\"camera not detected\");\n      } else\n         System.out.println(\"Camera detected \");\n           \n      \/\/ If there is next video frame\n      if (capture.read(matrix)) {\n         \/\/\/\/\/\/\/ Detecting the face in the snap \/\/\/\/\/\n         String file = \"E:\/OpenCV\/facedetect\/lbpcascade_frontalface.xml\";\n         CascadeClassifier classifier = new CascadeClassifier(file);\n\n         MatOfRect faceDetections = new MatOfRect();\n         classifier.detectMultiScale(matrix, faceDetections);\n         System.out.println(String.format(\"Detected %s faces\",\n            faceDetections.toArray().length));\n\n         <strong>\/\/ Drawing boxes\n         for (Rect rect : faceDetections.toArray()) {\n            Imgproc.rectangle(\n               matrix,                                   \/\/where to draw the box\n               new Point(rect.x, rect.y),                            \/\/bottom left\n               new Point(rect.x + rect.width, rect.y + rect.height), \/\/top right\n               new Scalar(0, 0, 255)                                 \/\/RGB colour\n            );<\/strong>\n         }\n         \/\/ Creating BuffredImage from the matrix\n         BufferedImage image = new BufferedImage(matrix.width(), matrix.height(),\n            BufferedImage.TYPE_3BYTE_BGR);\n         \n         WritableRaster raster = image.getRaster();\n         DataBufferByte dataBuffer = (DataBufferByte) raster.getDataBuffer();\n         byte[] data = dataBuffer.getData();\n         matrix.get(0, 0, data);\n\n         this.matrix = matrix;\n           \n         \/\/ Creating the Writable Image\n         writableImage = SwingFXUtils.toFXImage(image, null);\n      }\n      return writableImage;\n   }\n   public void saveImage() {\n      \/\/ Saving the Image\n      String file = \"E:\/OpenCV\/chap23\/facedetected.jpg\";\n\n      \/\/ Instantiating the imagecodecs class\n      Imgcodecs imageCodecs = new Imgcodecs();\n\n      \/\/ Saving it again\n      imageCodecs.imwrite(file, matrix);\n   }\n   public static void main(String args[]) {\n      launch(args);\n   }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0412\u044b\u0445\u043e\u0434<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/coderlessons.com\/wp-content\/uploads\/2019\/07\/face_detection_using_camera.jpg\" alt=\"\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043b\u0438\u0446\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u0430\u043c\u0435\u0440\u044b\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u043e\u0442 \u0436\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043d\u0438\u043c\u043e\u043a, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435&nbsp;<strong>jpg<\/strong>&nbsp;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u043b\u0438\u0446\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0435\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043a\u043d\u0430 JavaFX. \u043f\u0440\u0438\u043c\u0435\u0440 import java.awt.image.BufferedImage; [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[108],"tags":[],"class_list":["post-3339","page","type-page","status-publish","hentry","category-opencv"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/pages\/3339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/comments?post=3339"}],"version-history":[{"count":0,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/pages\/3339\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/media?parent=3339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/categories?post=3339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/tags?post=3339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}