【Android App】实战项目之使用OpenCV人脸识别实现找人功能(附源码和演示 超详细)
创始人
2024-03-15 05:40:17

需要全部代码请点赞关注收藏后评论区留言私信~~~

人脸识别自古有之,每当官府要捉拿某人时,便在城墙贴出通缉告示并附上那人的肖像。只是该办法依赖人们的回忆与主观判断,指认结果多有出入,算不上什么先进。 如今利用监控摄像头结合机器学习算法,大大提高了人脸识别的成功率,使得人脸识别真正应用到了日常生活中。 从住宅小区的刷脸开门,到工作单位的刷脸考勤,到超市里便捷的刷脸支付,到各城市地铁的刷脸乘车,再到张学友演唱会上警方连续抓获逃犯,人脸识别被广泛地应用于门禁、购物、交通、公安等诸多领域。

一、需求描述

倘若利用人脸识别技术,寻找失散小孩的操作过程包含下列几个步骤:

(1)由家属提供小孩照片并上传给智慧天眼系统;

(2)智慧天眼迅速从各个监控摄像头实时匹配人脸;

(3)一旦发现高相似度的人脸,马上通知家属甄别画面确认是否找到;

 

 二、功能分析

功能主要通过摄像头实时识别人脸,用户只需录入待寻找人员信息,剩下就交给App自动匹配了,在准备寻人与寻人过程中,主要集成了以下App技术

(1)图像裁剪:待寻人员的头像要从原始图片中抠出来。

(2)数据库框架Room:待寻人员的信息要保存到数据库,更新人脸识别的结果也要修改数据库记录。

(3)计算机视觉库OpenCV:智慧天眼采用OpenCV实时寻人,同时通过OpenCV判定目标人员的相似程度。

(4)定位服务:找到相似人员后,要获取并保存当前所在位置,以便家属前来相认。

(5)网络通信框架:根据经纬度访问WEB服务查询详细地址。

下面介绍代码模块之间的关系

(1)WisdomEyeActivity.java:这是智慧天眼的寻人列表界面。

(2)PersonEditActivity.java:这是人员信息的添加页面,可在此上传待识别的人员头像。

(3)PersonCutActivity.java:这是人员头像的裁剪界面。

(4)PersonDetailActivity.java:这是待寻找人员的详情页面。

(5)PersonVerifyActivity.java:这是实时寻人的扫描界面。

三、效果展示

开始界面添加待寻找的人员信息

 

 

成功找到后效果如下

 

四、代码 

部分代码如下 需要全部代码请点赞关注收藏后评论区留言~~~

package com.example.face;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;import com.example.face.adapter.PersonListAdapter;
import com.example.face.dao.PersonDao;
import com.example.face.entity.PersonInfo;
import com.example.face.entity.PersonPortrait;import java.util.ArrayList;
import java.util.List;public class WisdomEyeActivity extends AppCompatActivity implementsAdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener {private final static String TAG = "WisdomEyeActivity";private ListView lv_person; // 声明一个列表视图对象private PersonDao personDao; // 声明一个人员的持久化对象private List mPersonList = new ArrayList<>(); // 人员信息列表@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_wisdom_eye);findViewById(R.id.iv_back).setOnClickListener(v -> finish());TextView tv_title = findViewById(R.id.tv_title);tv_title.setText("智慧天眼");lv_person = findViewById(R.id.lv_person);findViewById(R.id.btn_add).setOnClickListener(v -> {Intent intent = new Intent(this, PersonEditActivity.class);startActivity(intent);});// 从App实例中获取唯一的人员持久化对象personDao = MainApplication.getInstance().getPersonDB().personDao();}@Overrideprotected void onResume() {super.onResume();new Handler(Looper.myLooper()).post(() -> loadPersonList());}// 加载人员列表private void loadPersonList() {mPersonList = personDao.queryAllPerson(); // 加载所有人员信息for (int i=0; i portraitList = personDao.queryPersonPortrait(person.getName(), 0);person.setPortraitList(portraitList);mPersonList.set(i, person);}PersonListAdapter adapter = new PersonListAdapter(this, mPersonList);lv_person.setAdapter(adapter);// 注册列表项的点击监听器,点击时打开人员详情页面lv_person.setOnItemClickListener(this);// 注册列表项的长按监听器,长按时弹出是否删除对话框lv_person.setOnItemLongClickListener(this);}@Overridepublic void onItemClick(AdapterView parent, View view, int position, long id) {PersonInfo person = mPersonList.get(position);Intent intent = new Intent(this, PersonDetailActivity.class);intent.putExtra("person_name", person.getName());startActivity(intent);}@Overridepublic boolean onItemLongClick(AdapterView parent, View view, int position, long id) {PersonInfo person = mPersonList.get(position);AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle("请确认").setMessage("你是否要删除"+person.getName()+"的寻人记录").setPositiveButton("是", (dialog, which) -> {// 确定删除,则删除人员信息及其头像信息personDao.deletePerson(person);personDao.deletePortraitByName(person.getName(), -1);loadPersonList(); // 加载人员列表}).setNegativeButton("否", null);builder.create().show();return true;}
}

创作不易 觉得有帮助请点赞关注收藏~~~

相关内容

热门资讯

应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...