Opencv级联分类器实现人脸识别
2018-08-07 23:13
561 查看
在本章中,我们将学习如何使用OpenCV使用系统相机捕获帧。org.opencv.videoio包的VideoCapture类包含使用相机捕获视频的类和方法。让我们一步一步学习如何捕捉帧 -
第1步:加载OpenCV本机库
在使用OpenCV库编写Java代码时,您需要做的第一步是使用loadLibrary()加载OpenCV的本机库。加载OpenCV本机库,如下所示。
// Loading the core library System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
第2步:实例化视频捕获类
使用前面本教程中提到的任何函数来实例化Mat类。
// Instantiating the VideoCapture class (camera:: 0) VideoCapture capture = new VideoCapture(0);
第3步:读取帧
您可以使用VideoCapture类的read()方法从相机中读取帧。此方法接受Mat类的对象来存储读取的帧。
// Reading the next video frame from the camera Mat matrix = new Mat(); capture.read(matrix);
代码:
package com.gitee.dgw.Camera; import javafx.application.Application; import javafx.embed.swing.SwingFXUtils; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.image.ImageView; import javafx.scene.image.WritableImage; import javafx.stage.Stage; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.videoio.VideoCapture; import java.awt.image.BufferedImage; import java.awt.image.DataBufferByte; import java.awt.image.WritableRaster; public class CameraSnapshotJavaFX extends Application { static { platformUtils.loadLibraries(); } Mat matrix = null; @Override public void start(Stage stage) { // Capturing the snapshot from the camera CameraSnapshotJavaFX obj = new CameraSnapshotJavaFX(); WritableImage writableImage = obj.capureSnapShot(); // Saving the image obj.saveImage(); // Setting the image view ImageView imageView = new ImageView(writableImage); // setting the fit height and width of the image view imageView.setFitHeight(400); imageView.setFitWidth(600); // Setting the preserve ratio of the image view imageView.setPreserveRatio(true); // Creating a Group object Group root = new Group(imageView); // Creating a scene object Scene scene = new Scene(root, 600, 400); // Setting title to the Stage stage.setTitle("Capturing an image"); // Adding scene to the stage stage.setScene(scene); // Displaying the contents of the stage stage.show(); } public WritableImage capureSnapShot() { WritableImage WritableImage = null; // Instantiating the VideoCapture class (camera:: 0) VideoCapture capture = new VideoCapture(0); // Reading the next video frame from the camera Mat matrix = new Mat(); capture.read(matrix); // If camera is opened if( capture.isOpened()) { // If there is next video frame if (capture.read(matrix)) { // Creating BuffredImage from the matrix BufferedImage image = new BufferedImage(matrix.width(), matrix.height(), BufferedImage.TYPE_3BYTE_BGR); WritableRaster raster = image.getRaster(); DataBufferByte dataBuffer = (DataBufferByte) raster.getDataBuffer(); byte[] data = dataBuffer.getData(); matrix.get(0, 0, data); this.matrix = matrix; // Creating the Writable Image WritableImage = SwingFXUtils.toFXImage(image, null); } } return WritableImage; } public void saveImage() { // Saving the Image String file = "z://sanpshot.jpg"; // Instantiating the imgcodecs class Imgcodecs imageCodecs = new Imgcodecs(); // Saving it again imageCodecs.imwrite(file, matrix); } public static void main(String args[]) { launch(args); } }
相关文章推荐
- VS2010+Opencv2.4.4+MFC实现人脸检测与识别
- 静态图片人脸识别 OpenCV3,Python3实现
- openCV java(JFrame) 实现人脸识别,人脸自动检测,自动保存裁剪后人脸
- python调用OpenCV实现人脸识别功能
- openCV人脸识别三种算法实现(官网翻译)
- 利用opencv实现简单的人脸识别
- opencv+CNN实现人脸识别
- 使用Opencv实现IOS平台下的人脸识别
- OpenCV实现人脸识别——EigenFace特征脸法
- QT+Opencv实现人脸检测与性别识别(1)
- QT+Opencv实现人脸检测与性别识别(2)
- TensorFlow实现人脸识别(1)------Linux下用opencv打开视频
- openCV+ASM+LBP+Gabor实现人脸识别(GT人脸库)
- 【Android】Android使用OpenCV实现人脸识别(OpenCV+JavaCV)
- OpenCV + MFC 实现简单人脸识别
- Python + OpenCV 实现简单的人脸识别
- 基于OpenCV的人脸识别算法之二---代码实现
- 代码C++, opencv实现人脸识别,人脸检测,人脸匹配,视频中的人脸检测,摄像头下的人脸检测等
- OpenCV结合V4l2实现人脸检测以及人脸识别
- python-opencv-人脸识别实现 从图片中扣人脸