先上效果图:


最近在做opencv进行人脸识别的项目,一直有一个问题没有解决,如图

这里就是采用

每次提示都是这里出错,后来去google了,说是javacv环境没有搭建。
接下来就是开发的步骤:
1、就搭建javacv环境,在android studio中的导入jar包如下:

tips:这里安装之后还需要给手机安装opencvmanager,之后我会慢慢更新如何不需要安装opencvmanager就可以直接使用,还在学习中。。。

2、给manifest文件添加权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

因为我是要读取手机存储的图片。
3、写布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.uj.myapplication.Main2Activity"><ImageView
        android:id="@+id/iv_show1"android:layout_width="match_parent"android:layout_height="200dp" /><ImageView
        android:id="@+id/iv_show2"android:layout_width="match_parent"android:layout_height="200dp" /><TextView
        android:id="@+id/cmp"android:text="相似度"android:layout_gravity="center_horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</LinearLayout>

就是两个简单的图片加载和一个显示相似度的文本框
4、整个activity方法

package com.example.uj.myapplication;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;import org.bytedeco.javacpp.opencv_core;
import org.bytedeco.javacpp.opencv_core.IplImage;import static org.bytedeco.javacpp.helper.opencv_imgproc.cvCalcHist;
import static org.bytedeco.javacpp.opencv_core.CV_HIST_ARRAY;
import static org.bytedeco.javacpp.opencv_imgcodecs.CV_LOAD_IMAGE_GRAYSCALE;
import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;
import static org.bytedeco.javacpp.opencv_imgproc.CV_COMP_CORREL;
import static org.bytedeco.javacpp.opencv_imgproc.cvCompareHist;
import static org.bytedeco.javacpp.opencv_imgproc.cvNormalizeHist;public class Main2Activity extends AppCompatActivity {private ImageView imageViewShow1;private ImageView imageViewShow2;private TextView tv_cmp;/*** 第一张人脸的文件名*/private static final String FACE1 = "face1";/*** 第二张人脸的文件名*/private static final String FACE2 = "face2";private String path1 = "sdcard/FaceDetect/12.jpg";private String path2 = "sdcard/FaceDetect/13.jpg";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);imageViewShow1 = (ImageView) findViewById(R.id.iv_show1);imageViewShow2 = (ImageView) findViewById(R.id.iv_show2);tv_cmp = (TextView) findViewById(R.id.cmp);imageViewShow1.setImageBitmap(BitmapFactory.decodeFile(path1));imageViewShow2.setImageBitmap(BitmapFactory.decodeFile(path2));double result = CmpPic(path1,path2);tv_cmp.setText("相似度为: "+result);Toast.makeText(this, "相似度为: "+result, Toast.LENGTH_SHORT).show();}/*** 特征对比* 对比的两张图片必须是灰度图** @param file1 人脸特征* @param file2 人脸特征* @return 相似度*/public double CmpPic(String file1, String file2) {int l_bins = 20;int hist_size[] = {l_bins};float v_ranges[] = {0, 100};float ranges[][] = {v_ranges};opencv_core.IplImage Image1 = cvLoadImage(file1, CV_LOAD_IMAGE_GRAYSCALE);opencv_core.IplImage Image2 = cvLoadImage(file2, CV_LOAD_IMAGE_GRAYSCALE);IplImage imageArr1[] = {Image1};IplImage imageArr2[] = {Image2};opencv_core.CvHistogram Histogram1 = opencv_core.CvHistogram.create(1, hist_size, CV_HIST_ARRAY, ranges, 1);opencv_core.CvHistogram Histogram2 = opencv_core.CvHistogram.create(1, hist_size, CV_HIST_ARRAY, ranges, 1);cvCalcHist(imageArr1, Histogram1, 0, null);cvCalcHist(imageArr2, Histogram2, 0, null);cvNormalizeHist(Histogram1, 100.0);cvNormalizeHist(Histogram2, 100.0);return cvCompareHist(Histogram1, Histogram2, CV_COMP_CORREL);}/*** 提取特征** @param context  Context* @param fileName 文件名* @return 特征图片*/public Bitmap getImage(Context context, String fileName) {String filePath = getFilePath(context, fileName);if (TextUtils.isEmpty(filePath)) {return null;} else {return BitmapFactory.decodeFile(filePath);}}/*** 获取人脸特征路径** @param fileName 人脸特征的图片的名字* @return 路径*/private String getFilePath(Context context, String fileName) {if (TextUtils.isEmpty(fileName)) {return null;}// 内存路径
//        return context.getApplicationContext().getFilesDir().getPath() + fileName + ".jpg";// 内存卡路径 需要SD卡读取权限return Environment.getExternalStorageDirectory() + "/FaceDetect/" + fileName + ".jpg";}}

这里就是加载两张本地的图片进行对比,其他的都还没有添加进去,还有待改进。

使用opencv人脸识别对比两张人脸图片相关推荐

  1. OpenCV 人脸识别 源代码

    请直接查看原文 OpenCV 人脸识别 源代码 https://hotdog29.com/?p=553 在 2019年7月6日 上张贴 由 hotdog发表回复 opencv 人脸识别 在本教程中,您 ...

  2. CV之FR之MTCNN:基于TF框架利用MTCNN算法检测并对齐人脸图像进(人脸识别/人脸相似度)而得出人脸特征向量从而计算两张人脸图片距离案例应用之详细攻略

    CV之FR之MTCNN:基于TF框架利用MTCNN算法检测并对齐人脸图像进(人脸识别/人脸相似度)而得出人脸特征向量从而计算两张人脸图片距离案例应用之详细攻略 目录 基于TF框架利用MTCNN算法检测 ...

  3. 大华sdk(java)上传人脸图片到人脸库,订阅人脸识别对比

    上传人脸图片到人脸库 controller: @RestController @RequestMapping("/facePicture") public class FacePi ...

  4. OpenCv人脸识别开发实战

    一.OpenCV简介 OpenCV(全称:Open Source Computer Vision Library),是一个跨平台的计算机视觉库.OpenCV可用于开发实时的图像处理.计算机视觉以及模式 ...

  5. python人脸照片分类_Python OpenCV 人脸识别(一)

    前面介绍了Numpy模块,下面再介绍一个OpenCV模块,就基于这两个库看一下当下很火的人工智能是如何实现的,我们介绍几个:人脸识别(当下非常火的).音视频操作等等.今天先介绍一下静态图片的人脸识别, ...

  6. python opencv人脸识别考勤系统的完整源码

    这篇文章主要介绍了python opencv人脸识别考勤系统的完整源码,本文给大家介绍的非常详细,希望对大家的学习或工作具有一定的参考借鉴价值. 代码如下: import wx import wx.g ...

  7. opencv人脸识别-海康网络摄像头

    配置环境 管网下载地址:https://opencv.org/releases/ ps:高版本的管网jar中只有基础方法,功能比较全的jar包可以通过管网源码编译生成或者网上下载 根据环境下载匹配的包 ...

  8. 虹软 ArcFace 与 Dlib 人脸识别对比

    我司最近要做和人脸识别相关的产品,原来使用的是某在线人脸识别平台,识别率和识别速度很满意,但是随着量起来的话,成本也是越来越不能接受(目前该功能我们是免费给用户使用的),而且一旦我们的设备掉线了就无法 ...

  9. openCV人脸识别简单案例

    1 基础 我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像(不含面部的图像)来训练分类器.我们需要从其中提取特征.下图中的 Haar 特征会被使用,就像我们的卷积核 ...

  10. 基于python opencv人脸识别的签到系统

    基于python opencv人脸识别的签到系统 前言 先看下效果 实现的功能 开始准备 页面的构建 功能实现 代码部分 总结 前言 一个基于opencv人脸识别和TensorFlow进行模型训练的人 ...

最新文章

  1. LaTeX 修改参考文献的方法
  2. 一次expdp 错误的分析处理
  3. [转]ORACLE日期时间函数大全
  4. unity 解决乱码_Unity3d中IOS应用出现乱码怎么办?
  5. 如何给容器服务的Docker增加数据盘
  6. CURLE_WRITE_ERROR
  7. 算法黑话大赏,我直呼好家伙!
  8. -矩阵-创建矩阵-简单方法
  9. Java爬虫入门程序
  10. JAVA打印中文乱码问题
  11. 微商怎么推广引流?学会玩豆瓣让精准流量源源不断
  12. 如何完整保存离线网页
  13. 狄利克雷卷积_狄利克雷卷积学习笔记
  14. JavaWeb 第八章 Day11天2020080605018
  15. 大年初三,字节跳动“线上免费春节档”电影再升级,13部影片登场
  16. react版数组遍历
  17. 1:什么是空指针?区分 NULL、0 和 ‘\0‘
  18. OSPF---路由备份的设计实验
  19. linux top 命令
  20. 在 1080P 的显示器上,4K 的视频是否看起来比 1080P 的视频更清晰?

热门文章

  1. 数字信号处理实验(五)—— 心电信号处理 IIR FIR滤波综合题(上篇)
  2. 2020-2023保时捷Taycan维修手册电路图技术培训手册用户手册电动汽车技术资料
  3. 中频逆变IGBT控制板 感应加热电源 中高频电阻焊电源逆变技术
  4. 网络爬虫相关软件以及论文检索与推荐网站调研
  5. 【堆栈溢出】堆栈溢出_liangchaoxi的IT博客_新浪博客
  6. 动态爬虫之手机版QQ空间登录
  7. 阿里腾讯大战前夜:决战2013,决战移动电商!
  8. ROS 2 Crystal Clemmys版机器人操作系统补充说明
  9. Windows 使用 CMD 命令行下载文件
  10. Python爬虫--爬取电影天堂网站电影下载地址