博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java+OpenCV实现人脸抓拍并保存至本地
阅读量:3959 次
发布时间:2019-05-24

本文共 2791 字,大约阅读时间需要 9 分钟。

首先下载OpenCV并安装

在这里插入图片描述

下载后目录结构

在这里插入图片描述

环境配置

在这里插入图片描述

在这里插入图片描述

打开IntelliJ IDEA 导入opencv的jar

在这里插入图片描述

在这里插入图片描述

选择前面安装好的opencv下,里面的build->java目录下有一个jar

在这里插入图片描述

添加虚拟机指令(不添加报错!)

-Djava.library.path=F:/opencv/opencv/build/java/x64(路径根据自己的实际路径来定)

在这里插入图片描述

测试类FaceCaptured

import org.opencv.core.Core;import org.opencv.core.Mat;import org.opencv.core.MatOfRect;import org.opencv.core.Point;import org.opencv.core.Rect;import org.opencv.core.Scalar;import org.opencv.highgui.HighGui;import org.opencv.imgcodecs.Imgcodecs;import org.opencv.imgproc.Imgproc;import org.opencv.objdetect.CascadeClassifier;import org.opencv.videoio.VideoCapture;/** * 创建人: 住在隔壁的王学长 
* 创建时间: 2020/7/4 17:01
* JDK 1.8 * class:人脸抓拍 * 作用:调用ip摄像头和usb摄像头以及本机摄像头进行人脸抓拍保存至本地 */public class FaceCaptured {
static {
//在使用OpenCV前必须加载Core.NATIVE_LIBRARY_NAME类,否则会报错 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); } public static void main(String[] args) {
videoFace(); } /** * OpenCV-4.0.0 实时人脸识别 */ public static void videoFace() {
//VideoCapture capture=new VideoCapture(0); // VideoCapture(param):参数可改0:本地摄像头,1:其他摄像头,"rtsp://admin:admin@192.168.43.1:8554/live"为我调用的摄像头地址 VideoCapture capture=new VideoCapture("rtsp://admin:admin@192.168.43.1:8554/live"); Mat image=new Mat(); int index=0; if (capture.isOpened()) {
while(true) {
capture.read(image); HighGui.imshow("人脸识别扫描", getFace(image)); index=HighGui.waitKey(1); if (index==27) {
break; } } } return; } /** * OpenCV-4.0.0 人脸识别 * @param image 待处理Mat图片(视频中的某一帧) * @return 处理后的图片 */ public static Mat getFace(Mat image) {
// 1 读取OpenCV自带的人脸识别特征XML文件 /*CascadeClassifier facebook=new CascadeClassifier("E:\\opencv\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");*/ CascadeClassifier facebook=new CascadeClassifier("E:\\opencv\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml"); // 2 特征匹配类 MatOfRect face = new MatOfRect(); // 3 特征匹配 facebook.detectMultiScale(image, face); Rect[] rects=face.toArray(); System.out.println("匹配到 "+rects.length+" 个人脸"); // 4 为每张识别到的人脸画一个圈 for (int i = 0; i < rects.length; i++) {
Imgproc.rectangle(image,new Point(rects[i].x,rects[i].y), new Point(rects[i].x + rects[i].width,rects[i].y + rects[i].height), new Scalar(0, 255, 0)); Imgproc.putText(image,"人脸监测", new Point(rects[i].x, rects[i].y),Imgproc.FONT_HERSHEY_SCRIPT_SIMPLEX, 1.0, new Scalar(0, 255, 0),1,Imgproc.LINE_AA,false); //监测到的人脸保存至本地 Imgcodecs.imwrite("F://zgf.jpg", image); } return image; }}

转载地址:http://nqqzi.baihongyu.com/

你可能感兴趣的文章
java 注意事项[教学]
查看>>
MetaWeblogAPI测试
查看>>
软件配置管理概念-1,介绍
查看>>
软件配置管理概念-2,用户角色
查看>>
软件配置管理概念-3,CM系统的概念
查看>>
JSP/Servlet应用程序优化八法
查看>>
人生必修的181条佛理
查看>>
The Most Widely Used Java Libraries
查看>>
简单在单机使用apache-james(开源邮件服务器)
查看>>
lsof 快速起步
查看>>
使用ScribeFire方便地发布blog
查看>>
跨平台Java程序注意事项
查看>>
Python字符与数字的相互转换
查看>>
C 指针解读
查看>>
有关乱码的处理---中国程序员永远无法避免的话题
查看>>
JSP的运行内幕
查看>>
python超简单的web服务器
查看>>
代理模式、静态代理、动态代理、aop
查看>>
Struts1.x Spring2.x Hibernate3.x DWR2.x整合工具文档v1.00
查看>>
大型Web2.0站点构建技术初探
查看>>