OpenCV 人脸识别、图片相似度检测

这篇具有很好参考价值的文章主要介绍了OpenCV 人脸识别、图片相似度检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 识别出人脸后会得到两个人脸的 Rect 数组,然后比较这两个 Rect 数组的相似度即可!

实现步骤

====

工程目录准备


  1. 新建 Android Studio 项目 OpenCVCheck

  2. 导入 OpenCVLibrary320

  3. 在 module 下的 build.gradle 中引入 OpenCVLibrary 的编译:

compile project(‘:openCVLibrary320’)

检测任意两张图片的相似度的实现步骤


  1. 初始化 OpenCV:

static {

if (OpenCVLoader.initDebug()) {

Log.e(TAG, “OpenCV load success !”);

} else {

Log.e(TAG, “OpenCV load failed !”);

}

}

  1. 加载两张图片进入内存

Bitmap mBitmap1 = BitmapFactory.decodeResource(getResources(), R.mipmap.pic1);

Bitmap mBitmap2 = BitmapFactory.decodeResource(getResources(), R.mipmap.pic2);

  1. 将内存中的两张图片 bitmap 转换为 Mat 矩阵

Mat mat1 = new Mat();

Mat mat2 = new Mat();

Mat mat11 = new Mat();

Mat mat22 = new Mat();

Utils.bitmapToMat(mBitmap1, mat1);

Utils.bitmapToMat(mBitmap2, mat2);

Imgproc.cvtColor(mat1, mat11, Imgproc.COLOR_BGR2GRAY);

Imgproc.cvtColor(mat2, mat22, Imgproc.COLOR_BGR2GRAY);

  1. 把 Mat 矩阵的 type 转换为 Cv_8uc1(1 通道 8 位矩阵)类型,然后转换为 Cv_32F,通过 OpenCV 来进行俩个矩阵的比较

/**

  • 比较来个矩阵的相似度

  • @param srcMat

  • @param desMat

*/

public void comPareHist(Mat srcMat, Mat desMat) {

srcMat.convertTo(srcMat, CvType.CV_32F);

desMat.convertTo(desMat, CvType.CV_32F);

double target = Imgproc.compareHist(srcMat, desMat, Imgproc.CV_COMP_CORREL);

textView.setText(“相似度:” + target);

}

识别图片中是否有人脸步骤


  1. 初始化 OpenCV

if (!OpenCVLoader.initDebug()) {

Log.d(TAG, “Internal OpenCV library not found. Using OpenCV Manager for initialization”);

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_11, this, mLoaderCallback);

} else {

Log.d(TAG, “OpenCV library found inside package. Using it!”);

mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);

}

  1. 编译 .so 库

通过 ndk 来编译 jni 文件下的.cpp 文件,生成.so 库,以备程序使用

  1. 加载.so 库

// 在 Opencv 初始化完成后,调用 Native 库

System.loadLibrary(“detection_based_tracker”);

  1. 加载需要的人脸的 Haar 特征分类器就是一个 XML 文件,该文件中会描述人脸的 Haar 特征值

``` private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {

@Override

public void onManagerConnected(int status) {

switch (status) {

case LoaderCallbackInterface.SUCCESS: {

Log.i(TAG, “OpenCV loaded successfully”);

// Load native library after(!) OpenCV initialization

System.loadLibrary(“detection_based_tracker”);

try {

// load cascade file from application resources

InputStream is = getResources().openRawResource(R.raw.lbpcascade_frontalface);

File cascadeDir = getDir(“cascade”, Context.MODE_PRIVATE);

mCascadeFile = new File(cascadeDir, “lbpcascade_frontalface.xml”);

FileOutputStream os = new FileOutputStream(mCascadeFile);

byte[] buffer = new byte[4096];

int bytesRead;

while ((bytesRead = is.read(buffer)) != -1) {

os.write(buffer, 0, bytesRead);

}

is.close();

os.close();

mJavaDetector = new CascadeClassifier(mCascadeFile.getAbsolutePath());

if (mJavaDetector.empty()) {

Log.e(TAG, “Failed to load cascade classifier”);

mJavaDetector = null;

} else

Log.i(TAG, "Loaded cascade classifier from " + mCascadeFile.getAbsolutePath());

mNativeDetector = new DetectionBasedTracker(mCascadeFile.getAbsolutePath(), 0);

cascadeDir.delete();

} catch (IOException e) {

e.printStackTrace();

Log.e(TAG, "Failed to load cascade. Exception thrown: " + e);

}

}

break;

default: {

super.onManagerConnected(status);

}

break;

}

}

};

  1. 加载图片进入内存,得到 Mat 矩阵,有了 Mat 矩阵,然后通过调用 OpenCV 的 Native 方法,人脸探测器 CascadeClassifier 在该 Mat 矩阵中检测当前是否有人脸

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

OpenCV 人脸识别、图片相似度检测,程序员,opencv,webpack,人工智能

OpenCV 人脸识别、图片相似度检测,程序员,opencv,webpack,人工智能

OpenCV 人脸识别、图片相似度检测,程序员,opencv,webpack,人工智能

OpenCV 人脸识别、图片相似度检测,程序员,opencv,webpack,人工智能

OpenCV 人脸识别、图片相似度检测,程序员,opencv,webpack,人工智能

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

OpenCV 人脸识别、图片相似度检测,程序员,opencv,webpack,人工智能

学习福利

【Android 详细知识点思维脑图(技能树)】

OpenCV 人脸识别、图片相似度检测,程序员,opencv,webpack,人工智能

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

OpenCV 人脸识别、图片相似度检测,程序员,opencv,webpack,人工智能

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。文章来源地址https://www.toymoban.com/news/detail-853739.html

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

[外链图片转存中…(img-SmGr923u-1711869631803)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

到了这里,关于OpenCV 人脸识别、图片相似度检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能-OpenCV+Python实现人脸识别(人脸检测)

    在OpenCV中使用Haar特征检测人脸,那么需要使用OpenCV提供的xml文件(级联表)在haarcascades目录下。这张级联表有一个训练好的AdaBoost训练集。首先要采用样本的Haar特征训练分类器,从而得到一个级联的AdaBoost分类器。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征

    2024年02月06日
    浏览(81)
  • 软件杯 图像识别-人脸识别与疲劳检测 - python opencv

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于图像识别的人脸识别与疲劳检测系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:5分 🧿 更多资料, 项目分享: https://gitee.co

    2024年03月14日
    浏览(42)
  • 【opencv】python实现人脸检测和识别训练

    OpenCV 中的人脸识别通常基于哈尔特征分类器(Haar Cascade Classifier)进行。以下是 OpenCV 人脸识别的基本原理: Haar Cascade Classifier : 特征分类器 :Haar 特征是一种基于矩形区域的特征,可以用于图像中的对象检测。这些特征可以表示边缘、线和区域的变化等。 级联分类器 :

    2024年01月17日
    浏览(38)
  • 【OpenCV-Python】——Haar人脸检测&深度学习人脸检测&EigenFaces/FisherFaces/LBPH人脸识别

    目录 前言: 1、人脸检测 1.1 基于Haar的人脸检测 1.2 基于深度学习的人脸检测

    2024年02月05日
    浏览(41)
  • Python+OpenCV 简单实现人脸检测多个和人脸识别 2(附代码)

    如果dilb和face_recognition第三方包安装失败,请移步到Python 解决dilb和face_recognition第三方包安装失败_水w的博客-CSDN博客 上篇请移步到Python+dilb 简单实现人脸检测(附代码)_水w的博客-CSDN博客 本篇是在上篇的工作基础上进行的。 目录 6 人脸检测多个 7 视频检测 8 拍照保存 9 训练

    2024年01月16日
    浏览(42)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 一、简单介绍 二、简单进行人脸训练与识别 1、LBPH(Local Binary Patterns Histograms)算法进行人脸训练和识别 2、实现步骤: 3、判断是谁的人脸: 案例中涉及的关键函数说

    2024年04月26日
    浏览(62)
  • 计算机竞赛 图像识别-人脸识别与疲劳检测 - python opencv

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于图像识别的人脸识别与疲劳检测系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:5分 🧿 更多资料, 项目分享: https://gitee.co

    2024年02月12日
    浏览(62)
  • 基于opencv的人脸检测(图片、视频、摄像头)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、检测图片中的人脸 二、检测视频与摄像头中的人脸 总结 人脸检测识别一直是个热门的研究问题,同时也是opencv中一个实现相对容易的课题。 OpenCV自带了函数detectMultiScale()可以实现对行人

    2024年02月13日
    浏览(28)
  • Python基于深度学习的人脸识别项目源码+演示视频,利用OpenCV进行人脸检测与识别 preview

    ​ 该人脸识别实例是一个基于深度学习和计算机视觉技术的应用,主要利用OpenCV和Python作为开发工具。系统采用了一系列算法和技术,其中包括以下几个关键步骤: 图像预处理 :首先,对输入图像进行预处理,包括读取图片、将图片灰度转换、修改图片的尺寸、绘制矩形

    2024年04月13日
    浏览(35)
  • 使用OpenCV实现人脸特征点检测与实时表情识别

    引言:         本文介绍了如何利用 OpenCV 库实现人脸特征点检测,并进一步实现实时表情识别的案例。首先,通过 OpenCV 的Dlib库进行人脸特征点的定位,然后基于特征点的变化来识别不同的表情。这种方法不仅准确度高,而且实时性好,可以广泛应用于人脸表情分析、人

    2024年04月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包