java代码自动抠图_Opencv java实现人脸抠图和行为识别

本文介绍如何使用Java和OpenCV库在Windows上搭建环境,并提供了基于Java的OpenCV代码示例,用于人脸检测和行为识别。通过加载预训练的SVM模型,对图像进行处理,检测出睡觉、玩手机、抽烟等行为,并进行抠图保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于java的OpenCV环境搭建(Windows平台上ecplise) https://blog..net/qq_32447301/article/details/78494913

https://download..net/download/qq_37996327/10504398  opencv下载地址 亲测可用

以下为java测试案例代码

package com.snail.util.opencv;

import java.io.File;

import java.util.ArrayList;

import org.apache.ibatis.migration.MigrationException;

import org.opencv.core.Core;

import org.opencv.core.Mat;

import org.opencv.core.MatOfRect;

import org.opencv.core.Rect;

import org.opencv.core.Scalar;

import org.opencv.core.Size;

import org.opencv.imgcodecs.Imgcodecs;

import org.opencv.imgproc.Imgproc;

import org.opencv.objdetect.CascadeClassifier;

public class DetectImage {

// 学习SVM

public static  String StudyXML = "E:\\opencv\\build\\x64\\vc14\\bin\\studyxml\\cascade.xml";

// 睡觉SVM

public static  String SleepXML = "E:\\opencv\\build\\x64\\vc14\\bin\\xml\\cascade.xml";

// 玩手机SVM

public static  String MobleXML = "E:\\opencv\\build\\x64\\vc14\\bin\\xml\\cascade.xml";

// 抽烟SVM haarcascade_upperbody.xml

public static  String SmokeXML = "E:\\opencv\\sources\\data\\haarcascades\\haarcascade_upperbody.xml";

static{

// 载入opencv的库

System.out.println("加载opencv.dll库文件");

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

}

/**

*

* @param path  文件路径

* @param savePath  保存地址

* @param length  文件下的文件数量

* @param xmlPath xml的路径

*/

public static void detect(String path,String savePath,int length,String xmlPath){

System.out.println("Running DetectFace ... ");

// 从配置文件lbpcascade_frontalface.xml中创建一个人脸识别器,该文件位于opencv安装目录中

CascadeClassifier faceDetector = new CascadeClassifier(xmlPath);

CascadeClassifier face = new CascadeClassifier("E:/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml");

//faceDetector.load();

Mat image = Imgcodecs.imread(path);

// 在图片中检测人脸

MatOfRect faceDetections = new MatOfRect();

//faceDetections.

//faceDetector.detectMultiScale(image, faceDetections);

faceDetector.detectMultiScale(image, faceDetections);

//faceDetector.

System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

Rect[] rects = faceDetections.toArray();

//System.out.println("人脸检测完毕!画出矩形...");

for(int i = 0 ; i < rects.length ; i++){

Rect rect = rects[i];

Mat sub = image.submat(rect);   //Mat sub = new Mat(image,rect);

Mat mat = new Mat();

Size size = new Size(300, 300);

Imgproc.resize(sub, mat, size);//将人脸进行截图并保存

//String outFile = savepath;

//截图

//Imgcodecs.imwrite("E:/image/conation"+"//"+length+".jpg", mat);

Imgcodecs.imwrite(savePath+"//"+length+".jpg", mat);

//Mat facemat = Imgcodecs.imread(savePath+"//"+length+".jpg");

//MatOfRect faceRect = new MatOfRect();

/*face.detectMultiScale(facemat, faceRect);

if(faceRect.toArray().length > 0){

}else{

File file = new Fil

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值