Python调用API接口,实现人脸识别

news2024/11/25 12:31:43

人生苦短,我用Python

在开始之前,先问问大家:

什么是百度Aip模块?

百度AI平台提供了很多的API接口供开发者快速的调用运用在项目中
本文写的是使用百度AI的**在线接口SDK模块(baidu-aip)**进行实现人脸识别

除了人脸识别,其他api功能的调用也同理。

源码资料电子书:点击此处跳转文末名片获取

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

准备工作

本机环境

  • 系统:win11
  • Python版本:3.9.7
  • 编辑器:VS2022

安装baidu-aip模块

win + R 输入cmd打开命令提示符

在这里插入图片描述
执行安装百度AI模块

pip install baidu-aip

在这里插入图片描述

登录百度AI平台创建应用

打开百度AI平台 进行登录
在控制台中找到人脸识别

在这里插入图片描述
按自己要求创建应用

在这里插入图片描述
最后得到应用的AppID API Key Secret Key

在这里插入图片描述
记下值 等等会用到

AppID:10000000
API Key:xxxxxxxxxxxxxxxxxxxxxxxx
Secret Key:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

代码流程

导入baidu-aip模块

打开VS2022(VSCode PyCharm Sypder等同理)创建一个py文件
输入

from aip import AipFace

声明上文获取的AppID API Key Secret Key

APP_ID = '10000000'
API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

初始化百度AIP 人脸识别模块

client = AipFace(APP_ID, API_KEY, SECRET_KEY)

创建人脸检测函数

def face_detect(image):
    result = client.detect(image, image_type='BASE64')
    print(result)
    return result

输入的图片image必须是BASE64格式

将图片转为BASE64格式

导入base64包

import base64

将图片打开为 BASE64格式

但是导入到百度AI中需要为字符串格式,所以返回为字符串

def imageToBase64(imagePath):
    with open(imagePath, 'rb') as f:
        image = base64.b64encode(f.read())
        return str(image, encoding='utf-8')

打开图片进行检测

先准备一张图片pic1.jpg

在这里插入图片描述
调用函数

face_detect(imageToBase64("pic1.jpg"))

提示调用成功:

在这里插入图片描述
遇到的问题

运行时候提示:

requests.exceptions.ProxyError: HTTPSConnectionPool(host='aip.baidubce.com', port=443)

在这里插入图片描述
win + R 输入 regedit打开注册表,找到

\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

在这里插入图片描述
把ProxyEnable的值改为0

在这里插入图片描述
再运行即可

延伸出使用其他功能

除了人脸检测还可以使用人脸比、人脸搜索对等函数,调用方法同理,比如人脸比对。

def face_match(image1, image2):
    result = client.match([
    {
        'image': image1,
        'image_type': 'BASE64',
    },
    {
        'image': image2,
        'image_type': 'BASE64',
    }
   ])
    print(result)
    return result

人脸搜索

def face_search(image,group_id_list):
    result = client.search(image, image_type='BASE64',group_id_list=group_id_list)
    print(result)
    return result

APP_ID API_KEY SECRET_KEY 需要修改为自己的

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

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

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

相关文章

K100多功能嵌入吞吐式电动发卡读写一体机|读卡器技术选型问答

K100多功能嵌入吞吐式电动发卡读写一体机|读卡器技术是一款带卡槽,支持150张标准卡存放,电动式发卡、读写一体,支持磁条卡读卡,发卡;支持符合ISO7816协议的接触式芯片卡发卡,读写卡;支持符合ISO…

【C++详解】——vector类

📖 前言:本期介绍vector类。 目录🕒 1. vector的介绍🕒 2. vector的使用🕘 2.1 定义🕘 2.2 iterator🕘 2.3 空间增长🕘 2.4 增删查改🕒 2. vector的模拟实现&#x1f558…

Springboot+ssm微空间私人定向共享文件资料系统java

目 录 1绪论 1 1.1项目研究的背景 1 1.2开发意义 1 1.3项目研究现状及内容 5 1.4论文结构 5 2开发技术介绍 7 2.1 B/S架构 7 2.2 MySQL 介绍 7 2.3 MySQL环境配置 7 2.4 Java语言简介 8 2.5Jsp技术 8 3系统分析 9 3.1可行性分析 9 3.1…

Android Studio 编译C/C++生成.so文件

前期准备:下载NDK、CMake方法一:使用AndroidStudio自动创建NativeC/C 项目创建新项目创建项目后,会默认生成两个文件和相关默认配置.若创建好C项目后报错,则需要配置一下NDK路径如果上图配置页面显示无法配置,则需要手…

【疑难解决】EasyCVR集成宇视SDK关闭“按需直播”,一直未拉流是什么原因?

EasyCVR平台不仅能提供丰富的视频能力,还可提供云、边、端分布式海量视频资源的统一管理与运维,从而实现数据采集、处理、汇聚、分析、存储、管理等全环节的视频能力。借助智能分析网关的AI智能检测能力,可实现人脸、人体、车辆、烟火、物体、…

LeetCode-191-位1的个数

1、位运算 我们可以使用位运算来计算二进制串中1的个数。由于异或的性质,0与0异或为0,0与1异或为1,我们可以将n与0进行异或操作,而后逐位判断是否为1,最终将结果进行累加即可。 class Solution { public:int hamming…

Mybatis 基础1

Mybatis基础什么是Mybatis什么是框架ORM介绍快速入门环境搭建MyBatis的相关apiResources构建器SqlSessionFactoryBuilder工厂对象SqlSessionFactorySqlSession会话对象MyBatis 映射配置文件映射配置文件介绍查询功能新增功能修改功能删除功能小结Mybatis核心配置文件介绍核心配…

创建百度百科词条要交费吗?百度百科词条花钱吗?

互联网时代,百度逐渐成为了人们了解信息、搜集信息的主要渠道,越来越多的用户通过百度百科词条认识到了很多知名的人物、产品、品牌或是作品等等,百度百科词条在人们心中的信赖度也是越来越高。 百度百科词条具有权威性,百度百科…

Spring中Bean的生命周期(包含Spring执行流程)

文章目录一、Spring(Bean)执行流程二、Bean生命周期Bean的生命周期演示总结一、Spring(Bean)执行流程 启动容器(启动项目)读取配置文件(初始化) a) 使用xml注册bean b) 配置bean根(扫描)路径将bean存储到Spring中(存操作): 通过类注解进行扫描和装配将bean从Spring读取出来(取…

想要协同办公,企业云盘该怎么选?

信息数字时代,数字资产迎来爆发的同时,资产管理需求也在不断增加。在面对资源容量过大、素材无法大量共享等问题时,怎么让内容生产者和团队管理者更高效进行内容存储,满足项目在多元场景下分发、协作需求?赞奇超级云盘…

MySQL相关面试题

文章目录union 和 unionAll 的区别?drop、delete与truncate的区别 ?sql 语句如何优化 ?什么是事务 ?事务的四个特性(ACID) ?事务的隔离级别?索引主要有哪几种分类 ?什么时候适合添加索引&#x…

ClickHouse 单机安装及基础知识与 Spark 应用

什么是 ClickHouse? ClickHouse 是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 在传统的行式数据库系统中,数据按如下顺序存储: 处于同一行中的数据总是被物理的存储在一起。 常见的行式数据库系统有:MySQL、Postgres等。 在列式数据库系统中,数据按如下的顺…

ansible的常用模块介绍

ansible 常用命令/usr/bin/ansible  #Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行/usr/bin/ansible-doc #Ansible 模块功能查看工具/usr/bin/ansible-galaxy  #下载/上传优秀代码或Roles模块 的官网平台,基于网络的/usr/bin/ansible-playbo…

第八章 Flink集成Iceberg的DataStreamAPI、TableSQLAPI详解

1、概述 ​ 目前Flink支持使用DataStream API 和SQL API方式实时读取和写入Iceberg表,建议使用SQL API方式实时读取和写入Iceberg表。 Iceberg支持的Flink版本为1.11.x版本以上,以下为版本匹配关系: Flink版本Iceberg版本备注Flink1.11.XI…

Windows 安装 Docker

一、Docker 官网 Dockerhttps://hub.docker.com/下载地址 window Docker 下载地址https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe 二、安装 检测是否已经安装了docker docker -v 如下图 : 如果没有安装,则在第一点下…

【Spark分布式内存计算框架——Spark Core】5. RDD 函数补充:关联函数与练习

关联函数 当两个RDD的数据类型为二元组Key/Value对时,可以依据Key进行关联Join。 首先回顾一下SQL JOIN,用Venn图表示如下: RDD中关联JOIN函数都在PairRDDFunctions中,具体截图如下: 具体看一下join(等…

1624_MIT 6.828 stabs文档信息整理_上

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 前面为了完成MIT 6.828的堆栈信息解析大概看了一下这个文档,现在把看过的信息简单整理一下。 1. stabs主要是为调试器提供调试信息用的描述数据&#x…

11.XMLHttpRequest的进阶用法

目录 1 设置HTTP的请求时限 2 Formdata对象 2.1 简单使用 2.2 Formdata直接获取表单数据 2.3 上传文件 2.4 上传文件的进度 3 定义API根路径 4 请求出错 上面我们用的都是旧版的XMLHttpRequest,旧版有两个缺点 无法上传文件没有传送数据的进度信息…

Docker部署ddns-go,动态域名解析公网IPv6地址

Docker部署ddns-go,动态域名解析公网IPv6地址 ddns-go,自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。 嫌IPv6地址太难记?ddns来解决,将家里的公网IPv6地址用起来吧! 前言 为什么需要DDNS …

Java设计模式——装饰器模式

目录 1.什么是装饰器模式 2.装饰器模式优缺点 3.装饰器模式结构 4.代码示例 1.什么是装饰器模式 装饰器模式,指在不改变原有对象结构的基础情况下,动态地给该对象增加一些额外功能的职责。装饰器模式相比生成子类更加灵活。它属于对象结构型模式。 …