本论文源码是基于OpenCV库实现的Android端的人脸识别及智能比对系统,如需完整源码,可以联系博主获取。
一、论文综述
随着移动互联网的快速发展和智能手机的普及,人脸识别技术作为生物识别技术的重要分支,其在移动端的应用逐渐受到广泛关注。人脸识别技术不仅具有非接触性、非强制性、直观性等优点,而且在身份认证、安全监控、人机交互等领域具有广阔的应用前景。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含大量的图像和视频处理函数,为开发高效的人脸识别系统提供了有力的支持。
本文旨在设计并实现一个基于OpenCV的移动端人脸智能比对系统。该系统能够利用智能手机摄像头实时采集人脸图像,通过人脸检测、特征提取和比对等步骤,实现人脸的快速、准确识别。与传统的基于PC端的人脸识别系统相比,该系统具有便携性、实时性和易用性等优点,能够更好地满足移动端用户的需求。
目前,关于人脸识别技术的研究已经取得了显著的进展。在算法层面,深度学习技术的发展为人脸识别提供了更强大的特征表示能力。在应用层面,人脸识别技术在移动支付、门禁系统、社交娱乐等领域得到了广泛应用。然而,在移动端人脸识别系统的设计和实现过程中,仍然面临着诸多挑战,如硬件性能限制、图像质量不稳定、算法复杂度与实时性之间的平衡等。
二、相关技术
OpenCV图像处理技术:OpenCV提供了丰富的图像和视频处理函数,包括图像滤波、边缘检测、特征提取等。在人脸识别系统中,可以利用OpenCV进行人脸图像的预处理,如灰度化、降噪、归一化等,以提高后续人脸检测和识别的准确性。
人脸检测技术:人脸检测是人脸识别系统的重要组成部分。OpenCV中包含了多种人脸检测算法,如Haar特征级联分类器、深度学习算法等。这些算法能够有效地在图像中定位人脸的位置和大小,为后续的特征提取和识别提供基础。
特征提取与比对技术:特征提取是人脸识别的关键步骤。通过提取人脸图像中的关键特征,如局部二值模式直方图(LBPH)、Eigenfaces、Fisherfaces等,可以构建人脸的特征表示。随后,利用特征比对算法,如余弦相似度、欧氏距离等,可以度量待识别人脸与已知人脸之间的相似度,从而实现身份认证。
三、研究意义
本文的研究意义主要体现在以下几个方面:
推动移动端人脸识别技术的发展:通过设计并实现基于OpenCV的移动端人脸智能比对系统,可以进一步推动移动端人脸识别技术的发展,提高识别准确率和实时性。
拓宽人脸识别技术的应用范围:该系统的实现将为移动支付、门禁系统、社交娱乐等领域提供更为便捷、安全的身份认证方式,进一步拓宽人脸识别技术的应用范围。
为类似系统的设计与实现提供参考:本文的研究方法和成果可以为其他类似系统的设计与实现提供参考和借鉴,促进人脸识别技术的进一步发展和普及。
综上所述,基于OpenCV的移动端人脸智能比对系统的设计与实现具有重要的理论意义和实践价值,对于推动人脸识别技术的发展和应用具有积极的促进作用。
四、程序部署
运行Demo前请先安装 [OpenCV Manager],并给Demo授予CAMERA权限。
部署
Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
…
maven { url ‘https://jitpack.io’ }
}
}
Step 2. Add the dependency
dependencies {
compile ‘com.github.kongqw:FaceDetectLibrary:1.2.1’
}
Step 3. Add it in your app build.gradle
android {
……
packagingOptions {
exclude ‘META-INF/services/javax.annotation.processing.Processor’
pickFirst ‘org/bytedeco/javacpp/macosx-x86_64/libusb-1.0.dylib’
pickFirst ‘META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties’
pickFirst ‘META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml’
pickFirst ‘META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties’
pickFirst ‘META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml’
}
}
Step 4. Set screen orientation in your AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest ……>
<application
……>
<activity
……
android:screenOrientation="landscape">
……
</activity>
</application>
XML
<com.kongqw.view.CameraFaceDetectionView
android:id=“@+id/cameraFaceDetectionView”
android:layout_width=“match_parent”
android:layout_height=“match_parent”/>
Activity
添加人脸检测监听
CameraFaceDetectionView cameraFaceDetectionView = (CameraFaceDetectionView) findViewById(R.id.cameraFaceDetectionView);
cameraFaceDetectionView.setOnFaceDetectorListener(new CameraFaceDetectionView.OnFaceDetectorListener() {
@Override
public void onFace(Mat mat, Rect rect) {
}
});
添加加载OpenCV的监听
mCameraFaceDetectionView.setOnOpenCVInitListener(new OnOpenCVInitListener() {
@Override
public void onl oadSuccess() {
Log.i(TAG, "onLoadSuccess: ");
}
@Override
public void onl oadFail() {
Log.i(TAG, "onLoadFail: ");
}
@Override
public void onMarketError() {
Log.i(TAG, "onMarketError: ");
}
@Override
public void onInstallCanceled() {
Log.i(TAG, "onInstallCanceled: ");
}
@Override
public void onIncompatibleManagerVersion() {
Log.i(TAG, "onIncompatibleManagerVersion: ");
}
@Override
public void onOtherError() {
Log.i(TAG, "onOtherError: ");
}
});
加载OpenCV
mCameraFaceDetectionView.loadOpenCV(getApplicationContext());
1
切换摄像头
mCameraFaceDetectionView.switchCamera();
1
保存人脸特征
boolean isSave = FaceUtil.saveImage(Context context, Mat mat, Rect rect, String fileName);
1
删除人脸特征
boolean isSave = FaceUtil.deleteImage(Context context, String fileName);
1
提取人脸特征
用于显示,对比直接调用 FaceUtil.compare 即可。
Bitmap bitmap = FaceUtil.getImage(Context context, String fileName);
1
人脸识别(特征对比)
特征文件不存在没有抛异常,返回-1.
double score = FaceUtil.compare(Context context, String fileName1, String fileName2);
标签:人脸识别,void,对系统,OpenCV,人脸,毕业设计,Override,public From: https://blog.csdn.net/abackcab/article/details/136891276