使用JavaCV实现人脸检测+训练+识别(实时视频检测)

博主在Java项目中添加人脸识别模块,经摸索用JavaCV实现。文章介绍实现过程,说明环境为Win10、eclipse、JavaCV1.4.4,利用JavaCV内置OpenCV的facerecognizer分类器训练,强调JavaCV中OpenCV与独立版不同,不建议单独用OpenCV实现。

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

前言

在我自己的另一个java项目中想添加一个人脸识别模块,但是在网上搜寻了很多后资料后发现使用java实现人脸识别的例子几乎没有(用C++实现的特别多,用java的真的很少,虽然有很多类似标题的文章,但是经本人尝试很多都实现不了或者有很多小问题),经过自己的不断摸索,终于用JavaCV实现了人脸识别,这篇文章尽可能的详细说明实现过程。

一些说明

  1. 环境:系统Win10,编译环境eclipse,JavaCV1.4.4
  2. 说明:JavaCV内置了OpenCV,本次实现就是利用内置的OpenCV 的 facerecognizer分类器实现人脸训练的。需要特殊注意的一点是,虽然JavaCV内置了OpenCV,但是不代表JavaCV中的Opencv等于独立的OpenCV,再次强调,JavaCV中的OpenCV不等于单独的OpenCV!使用过程中一定不可以混用(也就是import的时候注意名称问题);
  3. 此外,如果想单独通过OpenCV来实现当时也是可行的,但是最新版本的OpenCV把face模块给独立出来扔到扩展包里面去了,所以正常安装OpenCV然后配置环境是没法调用的,还需要重新编译扩展包,总之很麻烦,不建议。。。

样本训练+测试

1.使用facerecognizer分类器进行训练,对分类器不熟悉的可以自行百度,这里不过多介绍分类器,而是着重介绍java代码

package FacePack1;

import static org.bytedeco.javacpp.opencv_core.*;
import static org.bytedeco.javacpp.opencv_face.*;
import static org.bytedeco.javacpp.opencv_imgproc.*;
import static org.bytedeco.javacpp.opencv_objdetect.*;
import java.nio.IntBuffer;
import java.util.List;
import java.util.Vector;
import javax.swing.JFrame;
import org.bytedeco.javacpp.opencv_imgcodecs;
import org.bytedeco.javacpp.BytePointer;
import org.bytedeco.javacpp.DoublePointer;
import org.bytedeco.javacpp.IntPointer;
import org.bytedeco.javacpp.opencv_core;
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Fram
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值