【百度AI_人脸识别】图片对比相似度、人脸对比登录(调摄像头)

人脸对比

此文档功能:

  • 两张人脸图片相似度对比:比对两张图片中人脸的相似度,并返回相似度分值。
  • 存档一张图片与调用的摄像中的人脸进行对比。
  • 项目、资源下载:https://download.csdn.net/download/m0_70083523/87150842?spm=1001.2014.3001.5503

1、人脸识别申请:

产品--->人工智能--->人脸识别认证

在这里插入图片描述

领取资源-->创建应用-->调用服务:

在这里插入图片描述

  • 领取资源:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpeb2B2Z-1669287467788)(F:\AAAAAAAANEW\Typora-user-images\1669283895135.png)]

  • 创建应用:获得密钥

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tzYDW4Yw-1669287467788)(F:\AAAAAAAANEW\Typora-user-images\1669284206816.png)]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ml2I8yLQ-1669287467789)(F:\AAAAAAAANEW\Typora-user-images\1669284243789.png)]

  • 调用服务:进入技术文档

    gitHub不一定能进去,那就根据API文档使用接口即可。
    在这里插入图片描述

2、创建项目:

▶创建springBoot项目,创建com包即可,方便项目的复制

在这里插入图片描述

▶将下载的zip解压,找到baidu文件整个复制到项目中

在这里插入图片描述
▶pom.xml中导包jar包:

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>1.7.25</version>
</dependency>
<dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20180130</version>
</dependency>

3、项目预览:

  • 1、api的关键类,AipFace这里面就是百度提供给我们的所有方法,可直接使用。
  • 2、Test.java是第四步要创建的测试类,调用平台创建的应用,对比图片。
    在这里插入图片描述

4、测试类:

▶创建测试类,测试类代码

测试类中要修改的东西(都在平台创建应用):

  • APP_ID
  • API_KEY
  • SECRET_KEY
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import org.json.JSONObject;
import sun.misc.BASE64Encoder;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;public class Test {//修改下列三个参数:public static final String APP_ID = "APP_ID ";public static final String API_KEY = "API_KEY ";public static final String SECRET_KEY = "SECRET_KEY ";public static void main(String[] args) {AipFace aipFace = new AipFace(APP_ID, API_KEY, SECRET_KEY);//放入自己本地图片路径:String img1="D:\\FaceDemo\\src\\main\\resources\\imgs\\img1.jpg";String img2="D:\\FaceDemo\\src\\main\\resources\\imgs\\img2.jpg";//两张不一样的图片String getImageStr1 = GetImageStr(img1);String getImageStr2 = GetImageStr(img2);//        String getImageStr3 = GetImageStr(img1);List<MatchRequest> input = new ArrayList<>();MatchRequest mr1 = new MatchRequest(getImageStr1, "BASE64");MatchRequest mr2 = new MatchRequest(getImageStr2, "BASE64");
//        MatchRequest mr2 = new MatchRequest(getImageStr3, "BASE64");input.add(mr1);input.add(mr2);JSONObject match = aipFace.match(input);System.out.println(match);}public static String GetImageStr(String imgFile) {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理InputStream in = null;byte[] data = null;//读取图片字节数组try {in = new FileInputStream(imgFile);data = new byte[in.available()];in.read(data);in.close();} catch (IOException e) {e.printStackTrace();}//对字节数组Base64编码BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(data);//返回Base64编码过的字节数组字符串}
}

▶运行Test的main方法,进行对比两图结果:相似性score:55.74…%, 接口调用成功!!!`

在这里插入图片描述
在这里插入图片描述

▶官方参数信息:https://ai.baidu.com/ai-doc/FACE/Lk37c1tpf学习看文档

调用摄像头:

在静态static中创建phote.html,并加入jquery的jar包

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"/><title></title><!-- 样式部分可以忽略 --><style>* {padding: 0;margin: 0;}div {width: 100vw;height: 100vh;display: flex;justify-content: center;align-items: center;}.btn {width: 100px;height: 50px;border-radius: 10px;background: #ff9900;line-height: 50px;text-align: center;color: #fff;box-shadow: 0 0 10px #999;}#video {width: 300px;height: 300px;border: 5px solid #000;border-radius: 10px;margin-left: 5px;}#canvas {width: 300px;height: 300px;border: 5px solid #000;border-radius: 10px;margin-left: 5px;}</style>
</head>
<script src="js/jquery-1.11.1.min.js" type="text/javascript" charset="utf-8"></script><body>
<div><div id="play" class="btn">开始摄像</div><div id="take" class="btn">拍照</div><div id="sub_btn" class="btn">登录</div><video id="video"></video><!-- 尽量在canvas标签上设置宽高 --><canvas id="canvas" width="300px" height="300px"></canvas></div>
<script>$(function () {// 开启摄像document.getElementById('play').onclick = () => {let constraints = {// video属性设置video: {width: 300,height: 300},// audio属性设置audio: false}navigator.mediaDevices.getUserMedia(constraints).then(mediaStream => {// 成功返回promise对象,接收一个mediaStream参数与video标签进行对接document.getElementById('video').srcObject = mediaStreamdocument.getElementById('video').play()})// 失败就失败了}// 拍照、canvas绘制document.getElementById('take').onclick = () => {let ctx = document.getElementById("canvas").getContext('2d')ctx.drawImage(document.getElementById("video"), 0, 0, 300, 300)}$("body").on("click", "#sub_btn", function () {var imgdata = document.getElementById("canvas").toDataURL("image/jpeg");console.log(imgdata)$.ajax({url:"/Face/test",type:"post",async: true,dataType:"json",contentType : "application/x-www-form-urlencoded; charset=utf-8",data:{image:imgdata},success:function (res) {if (res.result.score>70)alert("登录成功")else  alert("登录失败")}})});})
</script>
</body></html>

创建controller类

在这里插入图片描述

@Controller
@RequestMapping("/Face")
public class FaceController {public static final String APP_ID = "28626699";public static final String API_KEY = "o6sVZ78HN8n3aSE7pCkqPq6S";public static final String SECRET_KEY = "F7vjecMGzkggukxOga8xU4vpFy6NtVKt";@PostMapping( "/facetTest")public String facetTest(@RequestParam("image") String image) {String substring = image.substring("data:image/jpeg;base64,".length());AipFace aipFace = new AipFace(APP_ID, API_KEY, SECRET_KEY);//保存一张图片,与之后调用摄像头而来的图片进行对比String img1="D:\\IntelliJ_IDEAProjects\\springBoot_face\\src\\main\\resources\\img\\img1.jpg";//两张不一样的图片String getImageStr1 = GetImageStr(img1);List<MatchRequest> input = new ArrayList<>();MatchRequest mr1 = new MatchRequest(getImageStr1, "BASE64");MatchRequest mr2 = new MatchRequest(substring, "BASE64");input.add(mr1);input.add(mr2);JSONObject match = aipFace.match(input);System.out.println(match);return match.toString();}public static String GetImageStr(String imgFile) {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理InputStream in = null;byte[] data = null;//读取图片字节数组try {in = new FileInputStream(imgFile);data = new byte[in.available()];in.read(data);in.close();} catch (IOException e) {e.printStackTrace();}//对字节数组Base64编码BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(data);//返回Base64编码过的字节数组字符串}
}

在这里插入图片描述

在这里插入图片描述
这个图片的对比与我们在controller中存的那张图片有关:

//保存一张图片,与之后调用摄像头而来的图片进行对比String img1="D:\\IntelliJ_IDEAProjects\\springBoot_face\\src\\main\\resources\\img\\img1.jpg";

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255852.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Missing-Semester Lec1 Solution

操作系统&#xff1a; m a c O S M o n t e r e y v e r s i o n 12.6 macOS \ Monterey version \ 12.6 macOS Montereyversion 12.6 1、查看shell是否符合要求 echo $SHELL /bin/zsh2、在/tmp下新建一个名为missing的文件夹 mkdir missing3、用man查看程序touch的使用手册…

怎么做自媒体,这份入门攻略,建议收藏

1. 选择合适的平台 现在的自媒体平台非常多&#xff0c;有短视频平台、长视频平台、图文平台等&#xff0c;你可以依照自己的喜好去选择&#xff0c;不过要尽量选择用户量大一些的&#xff0c;也可以直接多个平台分发。 2. 确定领域 这是很关键的一步&#xff0c;你要选择你擅…

零基础使用ChatGPT写一个小游戏---文末附源码

ChatGPT&#xff1a;赋能自然语言处理的多种应用领域 ChatGPT是当今最先进的人工智能对话系统之一&#xff0c;已经被证明可以支持许多不同的自然语言处理应用程序。以下是ChatGPT可以运行的几个领域&#xff1a; 聊天机器人 ChatGPT作为一个建立在自然语言处理技术上的人工…

你是不是想做影视剪辑奈何不会写文案?我来帮你搞定文案

影视剪辑的本质就是我们进行一系列的主题动作分解组合&#xff0c;完成蒙太奇形象的塑造&#xff0c;影视剪辑主要分为几个步骤&#xff1a; 第一&#xff1a;视频素材准备 第二&#xff1a;文案素材准备 第三&#xff1a;确定剪辑方案 第四&#xff1a;剪辑手段选择 第五&…

短视频平台上亿用户都听过的声音|盘点三款超级好用的配音工具(内附教程哦~)

“这个女人叫小美”“这个男人叫小帅” 是不是很神奇&#xff0c;明明只是文字&#xff0c;耳朵却仿佛听到了声音&#xff0c;脑海里甚至浮现出了画面&#xff01;现在很多网上爆火的影视解说&#xff0c;都在用这一套文案话术&#xff0c;并且都配上了或声音厚实有磁性&#…

2023年集卡活动简记

文章目录 支付宝总评&#xff1a;【推荐】年味浓&#xff0c;必中奖&#xff0c;单倍金额不算少。只关注开奖可以除夕当天玩儿。集卡分1.88元难度&#xff1a;【非常低】必中奖时间投入&#xff1a;【较少】无需打开其他App&#xff0c;比较轻松。操作体验&#xff1a;【好】活…

超实用的配音软件推荐|想做短视频,还不快点进来看看

要说当下最火的行业&#xff0c;当属短视频自媒体行业了。各大平台短视频区块的崛起&#xff0c;给我们创造了很多机会&#xff0c;但在加入后&#xff0c;却又发现没那么简单。那么&#xff0c;我们到底应该如何正确的加入短视频创作行列呢&#xff1f; 接下来我将从各个方面…

2023最新版会声会影有哪些新功能介绍?

会声会影是Corel制作的一款功能强大的视频编辑软件&#xff0c;英文名&#xff1a;Corel VideoStudio。会声会影2023作为当下最为受欢迎的视频编辑处理程序&#xff0c;其在业内可以说享有极高的知名度&#xff1b;而全新的2023版本更是如此&#xff0c;很多忠实的用户都想来体…

短视频优质作者必备|配音神器分享|那些你刷视频时肯定听过的声音

相信很多朋友在刷短视频时&#xff0c;都有刷到过这样的声音。 热门电影解说博主都在用的声音 这类声音多出现在影视解说或漫画解说类的视频中。 很多朋友也想做这样的配音&#xff0c;却不知道用什么软件&#xff0c;从哪里做&#xff0c;怎么做。所以今天&#xff0c;我给大家…

全网最简单的短视频配音教程奉上|学到就是赚到

短视频的爆火&#xff0c;相信大家都有目共睹&#xff0c;想要在诺大的短视频海洋中&#xff0c;找到自己的一席之地&#xff0c;视频的制作至关重要&#xff01;不光要有精美的画面&#xff0c;优秀的文案&#xff0c;更需要好的旁白配音与之搭配。这个时候&#xff0c;有的朋…

超多热门视频都在用的声音|只要一部手机就能制作的配音神器

文章开始之前&#xff0c;咱们先来看一段视频↓↓↓ 太阳下了有月光 视频开头的声音是不是非常丰富自然呢&#xff1f;是不是听起来很像真人的声音呢&#xff1f;什么&#xff01;&#xff1f;你以为这就是真人&#xff1f;当然不是&#xff01;这就是最近各大短视频平台非常火…

快手,快影 iOS App反调试

Python实战社群 Java实战社群 长按识别下方二维码&#xff0c;按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者 | 倒影cc 来源 | 掘金 https://juejin.cn/post/6844904190720868360 快手&#xff0c;快影的App保护用的是同一套代码&#xff0c…

1727_使用虚拟机安装CentOS-7

全部学习汇总&#xff1a;GreyZhang/little_bits_of_linux: My notes on the trip of learning linux. (github.com) 离开Linux很久了&#xff0c;甚至怀念&#xff0c;虚拟机里装个CentOS 7玩玩。使用的是VM虚拟机&#xff0c;下载了CentOS 7的everything安装包。 1&#xf…

简单几个步骤,轻松完成短视频配音工作|别惊讶,让我手把手教你

给短视频配音有多简单&#xff1f;你根本想象不到&#xff0c;竟然只需要简单几步就能够完成&#xff01; 并不是所有短视频配音都需要自己亲自配&#xff0c;或者大价钱找真人配音老师。只需要利用配音软件&#xff0c;制作AI配音就可以完成。也许你会担心机器人声音太过生硬&…

新手如何入门视频剪辑?分享超好用的视频剪辑工具,剪辑、压缩、封面制作一网打尽!

哈喽大家好&#xff0c;我是菌菌~ vlog拍摄、视频混剪、课程录制……现如今&#xff0c;视频异常火爆&#xff0c;一种新的技能也被全民所需要&#xff0c;那就是视频剪辑&#xff01; 工欲善其事必先利其器&#xff0c;要想做视频没几个得力助手怎么能行&#xff1f; 今天&…

android ffmpeg 仿剪映播放器 剪辑视频 预览条 快速精准抽帧

android ffmpeg 仿剪映播放器 剪辑视频 预览条 快速精准抽帧 由于本人想学习音视频相关的东西&#xff0c;所以找了剪映作为借鉴&#xff0c;通过仿照剪映的功能学习音视频相关的东西&#xff0c;所以有了这个项目 暂时这个项目只有仿照剪映&#xff0c;剪辑的预览条的快速抽…

怎么下载老版本android,剪映旧版下载

剪映老版本对于喜欢发抖音快手的朋友们无疑是一个神器&#xff0c;因为它可以快速的对你的视频进行剪辑&#xff0c;而且还可以添加自己的专有水印&#xff0c;不仅如此它还可以将照片整合成视频&#xff0c;相当好用。 剪映旧版介绍 这是一款极简的视频编辑工具,让你轻松制作高…

怎么用快影去除视频中的水印?

第一步&#xff1a;首先打开快影app&#xff0c;点击左下角创作&#xff0c;再点击右上角快影百宝箱图标。 图片来源&#xff1a;微信视频号前后10年 第二步&#xff1a;点击一键修复 画面修复去痕工具图标。 图片来源&#xff1a;微信视频号前后10年 第三步&#xff1a;进入…

和府捞面全新品牌“小面小酒”在福州开业,下一批新店落地天津、淄博

6月11日&#xff0c;和府捞面全新品牌“和府小面小酒”福州仓山苏宁易购店正式营业。未来两个月内&#xff0c;“小面小酒”将在福州核心商圈加密布局&#xff0c;新门店落位东二环泰禾广场及万象九宜城。与此同时&#xff0c;“小面小酒”全国正式铺开&#xff0c;下一批新店落…

小饭馆拓客营销流程,小饭馆宣传推广方案

基于目前持续回暖的餐饮行业&#xff0c;小饭馆起死回生&#xff0c;业绩翻倍&#xff0c;关键在于营销推广。那么如何进行小饭馆的推广&#xff1f;今天我们就和各位聊聊小饭馆引流推广应该如何做&#xff01; 小饭馆营销推广流程 小饭馆引流推广方案主要包含如下&#xff1a…