示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载Amazon Rekognition 让开发者无需机器学习专业知识即可在应用中快速接入图像与视频分析能力本文以 aws-doc-sdk-examples 仓库中的estimate-age-example为核心讲解如何基于 AWS SDK for JavaScript v2并对比 v3 版本调用DetectFacesAPI完成对照片中多张人脸的年龄区间估算并在浏览器中展示结果。读完本文你将掌握从 CloudFormation 部署、Cognito 匿名身份认证配置到前端页面图片读取、字节转换与 API 调用的完整可运行链路。示例概览Age Estimator 的构成该示例位于仓库javascript/example_code/rekognition/estimate-age-example/src/目录由两个核心文件组成estimate-age.html页面骨架提供文件选择控件、结果显示区域并加载 AWS SDK for JavaScript v2 及 Cognito 相关脚本estimate-age.js业务逻辑负责图片读取、字节转换、调用 RekognitionDetectFacesAPI 并渲染年龄区间表格。整个示例的运行流程为用户在页面选择本地图片 → 前端读取图片并通过 Cognito Identity 完成匿名登录获得临时凭证 → 将图片以原始字节形式传给 RekognitionDetectFaces→ 返回每张人脸的AgeRange低龄/高龄区间→ 前端以表格形式渲染输出。前置准备通过 CloudFormation 部署认证资源示例的浏览器端代码需要 AWS 临时凭证才能调用 Rekognition仓库通过 CloudFormation 栈由 CDK 生成预先搭建 Cognito 身份池与 IAM 角色。部署完成后需要从资源清单中提取关键 ID。运行步骤如下对应原 README 的操作指引打开 AWS CloudFormation 控制台选择该示例对应的栈进入Resources资源标签页复制CognitoDefaultUnauthenticatedRole的Physical ID物理 ID在 estimate-age.html 文件中将IDENTITY_POOL_ID替换为上一步复制的 Physical ID同样在该文件中将REGION替换为你部署栈所使用的 AWS 区域例如us-east-1在浏览器中打开estimate-age.html按页面提示选择图片即可看到年龄估算结果。需要注意原 README 中步骤 2 表述为复制 CognitoDefaultUnauthenticatedRole 的 Physical ID但结合源码中IdentityPoolId: IDENTITY_POOL_ID的使用方式实际填入的应是 Cognito 身份池Identity Pool的 ID。从源码视角看该变量用于 AnonLog() 函数 中构造AWS.CognitoIdentityCredentials因此身份池 ID 才是正确取值README 的表述在实践时应以身份池 ID 为准。认证链路Cognito 匿名身份凭证的获取浏览器端直接调用 AWS API 无法使用普通 IAM 访问密钥示例采用 Cognito Identity 的匿名身份unauthenticated identity方案。在 estimate-age.html 中AnonLog()函数完成了这一过程// Provides anonymous log on to AWS services. function AnonLog() { // Configure the credentials provider to use your identity pool. AWS.config.region REGION; // Region AWS.config.credentials new AWS.CognitoIdentityCredentials({ IdentityPoolId: IDENTITY_POOL_ID, }); // Make the call to obtain credentials. AWS.config.credentials.get(function () { // Credentials will be available when this function is called. var accessKeyId AWS.config.credentials.accessKeyId; var secretAccessKey AWS.config.credentials.secretAccessKey; var sessionToken AWS.config.credentials.sessionToken; }); }关键点AWS.CognitoIdentityCredentials接受IdentityPoolId作为参数.get()方法发起异步请求获取临时凭证Access Key、Secret Key 与 Session Token页面头部通过三个script标签加载了 SDK 依赖aws-cognito-sdk.min.js、amazon-cognito-identity.min.js以及https://sdk.amazonaws.com/js/aws-sdk-2.16.0.min.jsv2 浏览器版 AWS SDK。这些脚本需按源码所示顺序引入否则AWS.CognitoIdentityCredentials将不可用。权限底座CloudFormation 栈中的 IAM 与身份池配置v2 示例的运行依赖的认证资源与仓库中 v3 版本 setup.yaml 描述的 CloudFormation/CDK 模板结构一致该模板完整刻画了认证授权链路ExampleIdentityPoolAWS::Cognito::IdentityPool设置AllowUnauthenticatedIdentities: true允许匿名身份访问CognitoDefaultUnauthenticatedRoleAWS::IAM::Role信任主体为cognito-identity.amazonaws.com并通过ForAnyValue:StringLike条件限定身份为unauthenticated匿名CognitoDefaultUnauthenticatedRoleDefaultPolicyAWS::IAM::Policy除mobileanalytics:PutEvents、cognito-sync:*外关键授权是rekognition:DetectFacesResource 为*——这是浏览器端能调用 DetectFaces 的权限根源DefaultValidAWS::Cognito::IdentityPoolRoleAttachment将匿名身份与上述角色绑定Outputs.Identitypoolid输出身份池 ID方便提取。模板中的rekognitionvideoanalyzerrole316A744F角色信任rekognition.amazonaws.com同样被创建供后续视频分析类扩展使用。从该模板可以推断整个示例遵循身份池授予匿名身份 → 匿名身份映射受限 IAM 角色 → 角色仅授权 DetectFaces 单个动作的最小权限设计。图片处理从 DataURL 到 ArrayBuffer 字节流RekognitionDetectFaces的Image.Bytes参数要求传入图片的原始字节blob而非 Base64 字符串。浏览器端的 FileReader 读取到的e.target.result是 DataURL 形式因此 estimate-age.js 中的ProcessImage()需要先解 Base64再转成ArrayBufferfunction ProcessImage() { AnonLog(); var control document.getElementById(fileToUpload); var file control.files[0]; // Load base64 encoded image for display. var reader new FileReader(); reader.onload (function (theFile) { return function (e) { //Call Rekognition AWS.region REGION; var rekognition new AWS.Rekognition(); var params { Image: { Bytes: e.target.result, }, Attributes: [ALL], }; rekognition.detectFaces(params, function (err, data) { ... }); }; })(file); reader.readAsArrayBuffer(file); }注意 v2 版本两种实现存在细微差异estimate-age.js 使用reader.readAsArrayBuffer(file)直接读取二进制并把e.target.result直接作为Image.Bytesestimate-age.html 中的ProcessImage()则使用reader.readAsDataURL(file)再经atob()解码并手工填充Uint8Array构造ArrayBuffervar length image.length; imageBytes new ArrayBuffer(length); var ua new Uint8Array(imageBytes); for (var i 0; i length; i) { ua[i] image.charCodeAt(i); } //Call Rekognition DetectFaces(imageBytes);该函数还包含图片格式校验先尝试按 JPEG 解析data:image/jpeg;base64,前缀失败则尝试 PNG两者均失败时弹出提示 Not an image file Rekognition can process 并中止调用。核心调用DetectFaces 与年龄区间解析无论哪种读取方式最终都会进入DetectFaces调用。请求参数结构如下参数说明Image.Bytes图片原始字节流ArrayBuffer或 Blob用于本地文件分析场景Attributes设置为[ALL]要求返回包括AgeRange、情绪、姿态等全部人脸属性若只需要年龄可省略该字段DetectFaces的响应中FaceDetails数组对应图片中的每一张人脸每项包含AgeRange.Low与AgeRange.High估算的年龄下限与上限。前端据此构建表格并写入#opResult元素rekognition.detectFaces(params, function (err, data) { if (err) console.log(err, err.stack); // an error occurred else { var table tabletrthLow/ththHigh/th/tr; // show each face and build out estimated age table for (var i 0; i data.FaceDetails.length; i) { table trtd data.FaceDetails[i].AgeRange.Low /tdtd data.FaceDetails[i].AgeRange.High /td/tr; } table /table; document.getElementById(opResult).innerHTML table; } });回调风格是 AWS SDK for JavaScript v2 的典型用法err与data同时传入出错时记录err.stack成功时遍历人脸。页面上 estimate-age.html 通过文件选择框的change事件触发ProcessImage()input typefile namefileToUpload idfileToUpload acceptimage/* p idopResult/pacceptimage/*限制只能选择图片文件#opResult则用于承载最终渲染出的 Low/High 年龄表格。进阶参考v3 版本的对应实现仓库还提供了基于 AWS SDK for JavaScript v3 的同名示例javascriptv3/example_code/rekognition/estimate-age-example/src/可作为迁移与对比参考estimate-age.jsv3以import { DetectFacesCommand } from aws-sdk/client-rekognition替代 v2 的全局AWS.Rekognition()调用方式变为rekognitionClient.send(new DetectFacesCommand(params))并采用async/await与try/catch取代回调rekognitionClient.jsv3通过fromCognitoIdentityPool与CognitoIdentityClient构造带匿名凭证的RekognitionClient等价于 v2 中AnonLog()AWS.config.credentials的组合estimate-age.htmlv3页面显著简化SDK 依赖改由main.js打包产物引入setup.yamlv3即前文分析的 CloudFormation/CDK 模板v2 与 v3 示例共享同一套认证资源设计。常见问题与排查建议403 / AccessDenied 错误多为身份池 ID 与区域配置不正确或 IAM 策略未包含rekognition:DetectFaces。可在 CloudFormation 模板的CognitoDefaultUnauthenticatedRoleDefaultPolicy中核对授权Not an image file Rekognition can process所选文件不是 JPEG/PNG或 DataURL 前缀格式与解析逻辑不匹配空表格或FaceDetails为空图片中未检测到人脸。可确认Attributes: [ALL]已传入因为年龄估算依赖该属性凭证过期匿名身份临时凭证有效期有限若长时间停留在页面可重新调用AnonLog()刷新凭证。总结本示例以最小化的前端实现串联起 Rekognition 图像分析的关键链路CloudFormation 提供权限底座、Cognito 匿名身份解决浏览器端凭证问题、FileReader 完成本地图片字节化、DetectFaces返回年龄区间。无论采用 v2 回调风格还是 v3async/await风格核心思路一致——理解Image.Bytes的字节要求与Attributes: [ALL]对AgeRange的影响是复用该方案到其他图片分析场景如情绪、姿态检测的关键。原始文档及两个版本的完整源码均可分别在 javascript/example_code/rekognition/estimate-age-example/src/README.md 与 javascriptv3/example_code/rekognition/estimate-age-example/src/ 目录中继续深入查看。赞分享示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载相关推荐使用 AWS SDK for C 调用 Amazon Rekognition从 Hello World 到图像标签检测实战使用 AWS SDK for C 调用 Amazon Rekognition从 Hello World 到图像标签检测实战 Amazon Rekognit示例工程教程后端使用 AWS SDK for .NET 调用 Amazon Rekognition图片与人脸分析完整实战指南基于 aws-doc-sdk-examples使用 AWS SDK for .NET 调用 Amazon Rekognition图片与人脸分析完整实战指南基于 aws doc sdk examples示例工程教程后端Real-ESRGAN终极指南让模糊图像瞬间清晰的AI魔法Real ESRGAN终极指南让模糊图像瞬间清晰的AI魔法 你是否曾经为那些模糊不清的老照片、低分辨率的网络图片或者压缩严重的动漫截图而烦恼现在这一切问题人工智能深度学习计算机视觉图像处理上一篇Omi Windows 与 macOS 功能对齐实战基于 4 个 Git Worktree 的并行执行计划深度解析下一篇GreptimeDB 表压缩Table Compaction设计解析从 LSM 分层到时间窗口合并策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Buildah containers 命令全解析:列出工作容器及其基础镜像 云原生 【免费下载链接】buildah A tool that facilitates building OCI images. 项目地址: https://gitcode.com/gh_mirrors/bu/buildah 点击查看 免费下载 本篇技术指南聚焦 Buildah 的 buildah containers 命令(别名 list、ls、ps)&#… · 2026/9/25 10:17:45
dataDemo.rar数据交付校验:工业场景下的标准化探查与清洗闭环 简介:本资源是一个面向C#数据库开发初学者与中级工程师的多数据库操作实战示例包,聚焦Oracle、SQL Server、MySQL及SQLite四大主流数据库在.NET环境下的集成实践,解决跨数据库连接、CRUD操作、事务管理及工具类封装等核心开发痛点。压缩包共3… · 2026/9/25 10:17:21
本地可编程代码模板系统:CLI驱动的动态代码生成实践 1. 项目概述:一个被误读的CLI工具命名陷阱“claude-code-templates”这个标题,第一眼容易让人联想到Anthropic官方推出的Claude大模型生态工具——尤其是结合热搜词里高频出现的claude cli、codex cli、npm安装、vscode配置等关键词,很多人会… · 2026/9/25 10:17:15
佛山正规排名前五的破碎锤油封定制工厂推荐 客户口碑力荐 在佛山乃至整个珠三角工程施工领域,破碎锤油封的适配稳定性直接影响整台设备的作业效率,矿山露天作业高温多尘、硬岩高频冲击的恶劣工况,对油封的密封性能和使用寿命提出了更高要求。找到靠谱的正规供应商,不仅能减少漏油故障带来… · 2026/9/25 10:40:51
Atlas 300V部署YOLO全攻略:从推理加速卡到CANN实战 后台连着好几个做视觉检测的朋友问我同一个问题:“Atlas 300V 24G是不是运算加速卡?能不能直接拿来跑YOLO?”还有人直接甩过来一张电商截图,上面写着“AI推理加速卡”,下面评论区吵成一团,有人说这就是个“… · 2026/9/25 10:40:51
昇腾Atlas 300V部署YOLOv5完整指南:从模型转换到推理优化 拿到这块 Atlas 300V(我手头是 24G 显存版本)的时候,第一个念头就是拿它来跑 YOLO。网上搜“atlas 部署 yolo”能翻出一堆零散帖子,但要么停留在“能跑”的演示层面,要么把昇腾工具链的步骤写得像黑话,新手… · 2026/9/25 10:40:45
高通双旗舰芯片深度解读:端侧AI与性能爆发如何重塑安卓体验 这两年高通在旗舰芯片上的动作越来越有意思,从“一年一旗舰”变成“一年双旗舰”,而且把AI抬到了绝对核心的位置。Snapdragon 8 Elite Gen 6 与 Extreme Gen 6 一发布,基本上把 2026 年安卓旗舰的底牌提前亮了出来:一颗走主流旗舰… · 2026/9/25 10:40:45
江苏正规源头焊接套筒生产厂家客户口碑力荐 衡水万泉建筑机械有限公司 江苏正规源头焊接套筒生产厂家客户口碑力荐 衡水万泉建筑机械有限公司衡水万泉建筑机械有限公司是专业生产可焊套筒、焊接套筒的源头厂家,为各类钢混组合结构工程提供强度达标、定制灵活的钢筋钢结构过渡连接产品,兼具螺纹连接与焊接传力的双重优势&… · 2026/9/25 10:40:45
Atlas 300V 24G部署YOLO全流程:身份确认、模型转换到推理优化 拿到一块Atlas 300V 24G的时候,我第一反应是“这玩意能不能当显卡使”。问了一圈,发现很多人对它的定位都停留在“带显存的硬件加速卡”这个模糊概念上,尤其是搜索框里还经常出现“atlas部署yolo”、“atlas 300v 24g 是运算加速卡吗”这类问… · 2026/9/25 10:40:45
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37