Opencv级联分类器实现人脸识别

在本章中,我们将学习如何使用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);

代码:

  1 package com.gitee.dgw.Camera;
  2 
  3 import javafx.application.Application;
  4 import javafx.embed.swing.SwingFXUtils;
  5 import javafx.scene.Group;
  6 import javafx.scene.Scene;
  7 import javafx.scene.image.ImageView;
  8 import javafx.scene.image.WritableImage;
  9 import javafx.stage.Stage;
 10 import org.opencv.core.Mat;
 11 import org.opencv.imgcodecs.Imgcodecs;
 12 import org.opencv.videoio.VideoCapture;
 13 
 14 import java.awt.image.BufferedImage;
 15 import java.awt.image.DataBufferByte;
 16 import java.awt.image.WritableRaster;
 17 
 18 public class CameraSnapshotJavaFX extends Application {
 19 
 20    static {
 21       platformUtils.loadLibraries();
 22    }
 23    Mat matrix = null;
 24 
 25    @Override
 26    public void start(Stage stage) {
 27       // Capturing the snapshot from the camera
 28       CameraSnapshotJavaFX obj = new CameraSnapshotJavaFX();
 29       WritableImage writableImage = obj.capureSnapShot();
 30 
 31       // Saving the image
 32       obj.saveImage();
 33 
 34       // Setting the image view
 35       ImageView imageView = new ImageView(writableImage);
 36 
 37       // setting the fit height and width of the image view
 38       imageView.setFitHeight(400);
 39       imageView.setFitWidth(600);
 40 
 41       // Setting the preserve ratio of the image view
 42       imageView.setPreserveRatio(true);
 43 
 44       // Creating a Group object
 45       Group root = new Group(imageView);
 46 
 47       // Creating a scene object
 48       Scene scene = new Scene(root, 600, 400);
 49 
 50       // Setting title to the Stage
 51       stage.setTitle("Capturing an image");
 52 
 53       // Adding scene to the stage
 54       stage.setScene(scene);
 55 
 56       // Displaying the contents of the stage
 57       stage.show();
 58    }
 59    public WritableImage capureSnapShot() {
 60       WritableImage WritableImage = null;
 61 
 62 
 63       // Instantiating the VideoCapture class (camera:: 0)
 64       VideoCapture capture = new VideoCapture(0);
 65 
 66       // Reading the next video frame from the camera
 67       Mat matrix = new Mat();
 68       capture.read(matrix);
 69 
 70       // If camera is opened
 71       if( capture.isOpened()) {
 72          // If there is next video frame
 73          if (capture.read(matrix)) {
 74             // Creating BuffredImage from the matrix
 75             BufferedImage image = new BufferedImage(matrix.width(),
 76                matrix.height(), BufferedImage.TYPE_3BYTE_BGR);
 77             
 78             WritableRaster raster = image.getRaster();
 79             DataBufferByte dataBuffer = (DataBufferByte) raster.getDataBuffer();
 80             byte[] data = dataBuffer.getData();
 81             matrix.get(0, 0, data);
 82             this.matrix = matrix;
 83             
 84             // Creating the Writable Image
 85             WritableImage = SwingFXUtils.toFXImage(image, null);
 86          }
 87       }
 88       return WritableImage;
 89    }
 90    public void saveImage() {
 91       // Saving the Image
 92       String file = "z://sanpshot.jpg";
 93 
 94       // Instantiating the imgcodecs class
 95       Imgcodecs imageCodecs = new Imgcodecs();
 96 
 97       // Saving it again 
 98       imageCodecs.imwrite(file, matrix);
 99    }
100    public static void main(String args[]) {
101       launch(args);
102    }
103 }

 






转载于:https://www.cnblogs.com/dgwblog/p/9440160.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器的防火墙禁止了对指定通讯端口的访问,使用iptables限制访问网站指定端口...

Linux用得比较少,所以对iptables也不是很熟悉,最近部署网站,因为对外的80端口是通过nginx转发,而内部程序都是类似8080、3000之类的端口,不做处理的情况下,很可能会看到如:地址www.poorren.com、地址www.po…

RISC-V正在成为芯片世界中的Linux

来源:科技大本营芯片是信息技术的引擎,推动着人类社会的数字化、信息化与智能化。随着摩尔定律濒临终结,维持芯片技术创新面临挑战。开源芯片设计将是应对挑战的新思路。如今芯片设计动辄需要上亿研发费用、投入上百人,只有少数企…

细胞核起源于病毒?

撰文:Christie Wilcox来源:环球科学(ID: huanqiukexue)翻译:郑宸编辑:杨心舟细胞中,一个“病毒工厂”(图中左侧大而圆的结构)被其生产出来的新病毒颗粒(若干小…

css3 固定,CSS3 calc()不适用于固定位置/绝对位置

编辑2:这是版本的Webkit浏览器(如询问意见),与最新的Chrome测试版本,并且完全为我工作:http://jsfiddle.net/HvVst/1/使用-webkit-calc()而不是calc()。编辑:然后,你必须减去1px的边框到0.5em填充&#xff…

Leetcode--304. 二维区域和检索

给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。 上图子矩阵左上角 (row1, col1) (2, 1) ,右下角(row2, col2) (4, 3),该子矩形内元素的总和为 8。 示例…

BZOJ4001 TJOI2015概率论(生成函数+卡特兰数)

设f(n)为n个节点的二叉树个数,g(n)为n个节点的二叉树的叶子数量之和。则答案为g(n)/f(n)。 显然f(n)为卡特兰数。有递推式f(n)Σf(i)f(n-i-1) (i0~n-1)。 类似地,左子树节点数为i时右子树有f(n-i-1)种情况,那么可以对左子树的叶子节点数之和计…

前沿|8种面部表情实时追踪,你的喜怒哀乐全被AI看穿了

来源:雷锋网与人类一样,AI也学会了“察言观色”有研究表明,人类在相似的社会环境下表达情感的面部表情几乎是相同的。如果一个人皱眉、嘟嘴、脸色涨红,你一定知道TA是在生气,现在AI同样能够“看穿”这一点。情感分析一…

css3 transform文字,CSS3 transform 字体模糊问题

使用 Vue Material 的 Dialog 做了一个弹出框,弹出框内动态绑定了几个数据,页面效果一出来What the fuck? 马赛克?Vue Material 的组件肯定没问题,应该自己代码哪问题,先把官网提供的例子在项目中运行了一下&#xff…

二分 poj 3273

题目链接:https://vjudge.net/problem/POJ-3273 把n个连续的数字划分成m个连续的部分,每个部分都有一个部分和(这个部分所有值加起来),现在要使划分里最大的那个部分和最小。 我用的也是二分,用二分枚举最大…

MyBatis的配置

dao层的操作太麻烦 jdbc 连接数据库,释放空间什么的太烦了,为了简化,引入了MyBatis Mabatis可以简化JDBC操作,实现数据的持久化 Mabatis是一个ORM产品 ORM:Object Relational Mapping eg: person对象 p…

费曼:微积分是上帝的语言 | 书摘

莱布尼茨和牛顿,图片来自thegreatcoursesdaily.com来源: 赛先生制版编辑:Morgan撰文:史蒂夫斯托加茨(美国康奈尔大学应用数学系教授)没有微积分,我们就不会拥有手机、计算机和微波炉&#xff0c…

js纯ajax,自动完成JS类(纯JS, Ajax模式)

自动完成JS类(纯JS, Ajax模式)更新时间:2009年03月12日 23:51:15 作者:自动完成JS类,用户体验较好。封装成类,方便使用。本站一、 封装的JS文件//********************************************************//创建日期: 2009-03…

Leetcode--151. 翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或…

python opencv3 检测人

git&#xff1a;https://github.com/linyi0604/Computer-Vision 1 # coding:utf-82 3 import cv24 5 6 # 检测i方框 包含o方框7 def is_inside(o, i):8 ox, oy, ow, oh o9 ix, iy, iw, ih i 10 return ox > ix and ox ow < ix iw and oy oh < iy i…

朱松纯:AI从感知走向认知是必然趋势

来源&#xff1a;深度学习技术前沿1月28日&#xff0c;以"小数据、大任务"作为技术范式的强认知人工智能平台企业暗物智能科技&#xff08;以下简称“暗物智能”&#xff09;宣布&#xff0c;已于2020年年中完成5亿元人民币的A轮融资。本轮融资由赛领资本和吉富创投共…

五十个小技巧提高PHP执行效率

在项目开发过程中&#xff0c;经常遇到了一些PHP处理程序性能底下的情况&#xff0c;程序运行在centosnginx环境&#xff0c;虽然这个有很多的原因如&#xff1a;服务器本身配置&#xff0c;运行环境nginx服务&#xff0c;php-fpm配置等等&#xff0c;更多有一点仍然是PHPer没有…

statement的增删改查和动态的增删改查

一 statement的crud&#xff1a; mybatis约定&#xff1a; 输入参数parameterType和输出参数resultType&#xff0c;在形式上都只能有一个 如果输入参数&#xff1a;是简单类型(8个基本类型String)&#xff0c;则可以使用任何占位符&#xff0c;#{xxx} 如果是对象类型&…

科学家「黑进」果蝇大脑跑NLP任务,发现效率比BERT高

来源&#xff1a;机器之心最近一段时间&#xff0c;有关摩尔定律终结的讨论时常出现&#xff0c;深度学习越来越高的算力需求与芯片制造厂商们「挤牙膏」式的换代速度产生了不可调和的矛盾。对此&#xff0c;一些研究者们正在专注于常规架构的效率提升&#xff0c;也有一些研究…

配置信息的优化,类型转换器

1. 优化&#xff1a; 可以将配置信息单独放入db.properties中&#xff0c;然后再动态引入 db.properties:kv <configuration> <properties resource"db.properties"/> 引入之后&#xff0c;使用${key} 2. MyBatis全局参数 在<configuration&g…

Attention Model

参考1: https://blog.csdn.net/malefactor/article/details/50550211 attention部分实现: https://blog.csdn.net/mpk_no1/article/details/72862348转载于:https://www.cnblogs.com/ying-chease/p/9448726.html