在本节中,笔者将详细介绍 Azure 认知服务中的一种:计算机视觉 (Computer Vision) API。

我的一个客户有需求,他们需要消费者与自己的产品合照,然后上传到服务器并转发到朋友圈。

但是为了防止恶意用户上传不健康的照片,需要对图像进行筛查。

计算机视觉 API 的分析图像功能,正好有 Adult 参数,可以检测图像是否是色情的,正好满足客户的需求。  

请注意:

本文使用的是国内由世纪互联运维的 Azure China 计算机视觉服务,API 参考

如果是使用的是海外的 Azure China 计算机视觉服务,API参考

计算机视觉解决的问题:

1. 分析图像

检查图像中发现的视觉内容,分析是否有不健康内容。

2. 生成缩略图

裁剪和生成缩略图。

3. 读取图片中的文字

4. 识别名人

关键步骤主要有:

接下来我们进入 Demo 时间,在开始之前,请先准备 Azure China 账户。

第一部分:创建计算机视觉 API,并获得 API Key

1. 我们找到需要分析的图片 URL,我这里准备了一张人脸的照片

2. 我们登录 Azure China 管理界面

3. 点击下图的认知服务账户

4. 点击 创建认知服务账户。如下图:

5. 定价层,我们选择免费。因为是 Demo 环境,我们就用免费,如果是生产环境建议选择标准。

6. 创建完认知服务以后,我们点击密钥,获得访问这个计算机视觉 API 的 Access Key。请保留好这个 Key,下面还要继续使用。

第二部分:了解 API 参数

1. Request URL

2. Reques t 参数:

(1) visualFeatures 参数

我们可以设置 visualFeatures 为:

A. Categories: 对图像内容进行分类

B. Tags: 对图像进行标记

C. Description: 用完整的英文句子描述图像内容

D. Faces: 检测脸部是否存在。 如果存在,生成坐标,性别和年龄

E. ImageType: 检测图像是剪贴还是直线绘图

F. Color: 确定重音颜色,主色,以及图像是否为黑白

G. Adult: 检测图像是否是色情的(描绘裸露或性行为)。 还会检测到性暗示内容。

(2) details:

如果设置 Celebrities,则可以识别名人。

(3) language:

默认是 en,英文。

可以设置为 zh,简体中文。

3. Request headers:

(1) Content-Type

(2) Ocp-Apim-Subscription-Key:上面的 API Access Key

4.Request body:

(1)支持的图像为 JPEG, PNG, GIF和BMP

(2)图像的尺寸必须小于4MB

(3)图像的分辨率至少为50 X 50

第三部分:使用 API 测试控制台调试 API,并设置调试 API 的参数

我们拿到上面的 API Key,就可以写代码开发了。不过Azure认知服务提供了非常好的控制台,可以方便我们进行API调试。

1. 选择打开 API 测试控制台

2. 在 API 控制台,修改以下内容:

Query Parameters

(1) visualFeatures,我们输入:Categories,Tags,Description,Faces,ImageType,Color,Adult

这样识别多个元素。

(2) details,我们不输入信息

(3) language,使用默认的 en

Headers:

(1) Content-Type,我们使用默认值

(2) Ocp-Apim-Subscription-Key,我们输入步骤一的 API Access Key

Request body:

(1) 我们修改为:{"url":"https://leizhangstorage.blob.core.chinacloudapi.cn/azureblog/analyzeimagesample.jpg"}

所有参数的修改内容如下图:

Request URL 为:https://api.cognitive.azure.cn/vision/v1.0/analyze?visualFeatures=Categories,Tags,Description,Faces,ImageType,Color,Adult&language=en

然后我们点击 API 测试控制台的 Send。显示识别结果。

下面的结果我就不一一说明了,主要的显示结果有:

1. faces,识别出图像中的人脸坐标,性别和年龄
2. adultScore,识别出检测图像是否是色情的,分数越高,则图像色情的可能性越大
Pragma: no-cache
apim-request-id: 8a9e6b8c-3a20-42a0-91e0-52d6fbdc5f9e
Strict-Transport-Security: max-age=; includeSubDomains; preload
x-content-type-options: nosniff
Cache-Control: no-cache
Date: Thu, Jun :: GMT
X-AspNet-Version: 4.0.
X-Powered-By: ASP.NET
Content-Length:
Content-Type: application/json; charset=utf-
Expires: -
{
"categories": [
{
"name": "people_group",
"score": 0.9765625
}
],
"adult": {
"isAdultContent": false,
"isRacyContent": false,
"adultScore": 0.01091344840824604,
"racyScore": 0.055492393672466278
},
"tags": [
{
"name": "outdoor",
"confidence": 0.99716836214065552
},
{
"name": "person",
"confidence": 0.99493598937988281
},
{
"name": "posing",
"confidence": 0.95204299688339233
},
{
"name": "group",
"confidence": 0.82954329252243042
},
{
"name": "people",
"confidence": 0.583439290523529
},
{
"name": "crowd",
"confidence": 0.019400959834456444
}
],
"description": {
"tags": [
"outdoor",
"person",
"posing",
"photo",
"grass",
"group",
"standing",
"people",
"man",
"woman",
"young",
"holding",
"dress",
"white",
"court"
],
"captions": [
{
"text": "a group of people posing for a picture",
"confidence": 0.94583615520612
}
]
},
"requestId": "8a9e6b8c-3a20-42a0-91e0-52d6fbdc5f9e",
"metadata": {
"width": ,
"height": ,
"format": "Jpeg"
},
"faces": [
{
"age": ,
"gender": "Male",
"faceRectangle": {
"left": ,
"top": ,
"width": ,
"height":
}
},
{
"age": ,
"gender": "Male",
"faceRectangle": {
"left": ,
"top": ,
"width": ,
"height":
}
},
{
"age": ,
"gender": "Female",
"faceRectangle": {
"left": ,
"top": ,
"width": ,
"height":
}
},
{
"age": ,
"gender": "Female",
"faceRectangle": {
"left": ,
"top": ,
"width": ,
"height":
}
},
{
"age": ,
"gender": "Female",
"faceRectangle": {
"left": ,
"top": ,
"width": ,
"height":
}
},
{
"age": ,
"gender": "Female",
"faceRectangle": {
"left": ,
"top": ,
"width": ,
"height":
}
}
],
"color": {
"dominantColorForeground": "White",
"dominantColorBackground": "White",
"dominantColors": [
"White",
"Brown"
],
"accentColor": "4E5D1A",
"isBWImg": false
},
"imageType": {
"clipArtType": ,
"lineDrawingType":
}
}

更多精彩干货 请点击查看

欢迎有兴趣的朋友多多交流

A究院研究生 Azurecommunity@qq.com

Azure 认知服务--计算机视觉 API - 分析图像的更多相关文章

  1. Azure 认知服务 (3) 计算机视觉API - 分析图像,使用C#代码

    <Windows Azure Platform 系列文章目录> 在上一节中Azure 认知服务 (2) 计算机视觉API - 分析图像,笔者介绍了如何使用API测试控制台进行调试. 本章将 ...

  2. Azure 认知服务 (2) 计算机视觉API - 分析图像

    <Windows Azure Platform 系列文章目录> 在上一节内容中,笔者介绍了微软认知服务的概览. 在本节中,笔者将详细介绍微软认知服务中的一种:计算机视觉 (Computer ...

  3. Java 调用Azure认知服务Demo--Computer API

    说明 本文主要介绍使用Java代码,基于HTTP请求调用Microsoft Azure的认知服务.图片来源分别介绍了使用公网的URL和上传本地图片. 依赖的jar包下载地址: key的获取需要登录到A ...

  4. Azure 认知服务 (5) 计算机视觉API - 使用C#代码实现读取图片中的文字(OCR)功能

    <Windows Azure Platform 系列文章目录> 在笔者之前的文章:Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR) 介绍了使用用户界面,在海 ...

  5. Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR)

    <Windows Azure Platform 系列文章目录> 微软Azure认知服务的计算机视觉API,还提供读取图片中的文字功能 在海外的Windows Azure认知服务的读取图片功 ...

  6. Azure认知服务之Face API上手体验

    Azure认知服务:Face API Face API是Azure认知服务之一,Face API有两个主要功能: 人脸检测 Face API可在图像中以高精度人脸位置检测多达64个人脸.图像可以通过文 ...

  7. Azure 认知服务概述

    背景知识 近些年随着机器学习.深度学习等技术的不断发展,人工智能在越来越多的场景得到了应用,如人脸识别.图像识别.语音识别.语音生成.自然语言处理.决策分析等等,让机器拥有了听.说.看和思考的能力,很 ...

  8. 技术博客:Azure 认知服务

    Azure 认知服务 1.概述 ​ 微软认知服务(Microsoft Cognitive Services)集合了多种智能API以及知识API,使每个开发人员无需具备机器学习的专业知识就能接触到 AI ...

  9. Azure认知服务的实际应用-资讯采集推送

    Azure认知服务的实际应用-资讯采集推送 演示 实现的是通过使用各种azure服务,每天自动获取资讯.博客,定时推送到公众号的功能! 微信公众号搜索TechViews,或直接扫描二维码关注,每天推送 ...

随机推荐

  1. 食物(矩阵快速幂)(DP)

    这个题..我们可以想到用递推写!!qwq(好吧,其实我的DP水平不高啊qwq) 就是我们以两个为单位(一共九种组合情况),然后往后面推下一位的情况. 通过手动模拟,我们可以找到它们之间的递推关系(详见 ...

  2. 二十六、Nodejs 操作 MongoDb 数据库

    一. 在 Nodejs 中使用 Mongodb 前面的课程我们讲了用命令操作 MongoDB,这里我们看下如何用 nodejs 来操作数据库需要引包: npm install mongodb --sa ...

  3. coffee主题美化内容概要

    1.具备自动生浮动标题目录(可隐藏) 2.页首目录概要 3.主标题有明显的标志背景颜色,二级标题缩进合适 4.一级.二级标题下图片缩进合适 5.博客签名 6.背景音乐列表 7.打赏 8.联系方式(QQ ...

  4. python 特性:height-->while

    """ 出题:height 女生找对象 男生在1米-1.5米之间 小强你在哪里? 男生在1.5-1.7米之间 没有安全感 男生在1.7 - 1.8米之间 帅哥 留个电话 ...

  5. [ActionScript 3.0] 运用Color类interpolateColor静态方法绘制渐变色

    以下类可直接作为文档类测试,效果如图: package { import fl.motion.Color; import flash.display.GradientType; import flas ...

  6. Squid代理服务器(二)——配置Squid服务器

    一.传统代理 (一)需求分析 局域网内,客户机访问自家的Web服务器,通过Squid代理服务器访问Web服务器,再由Squid反馈给客户机;在Squid主机上,构建Squid为客户机访问网站提供代理服 ...

  7. C#找出接口的所有实现类并遍历执行这些类的公共方法

    //这里找出了实现IOutputArray接口的所有类 private void FindAllClass() { var types = AppDomain.CurrentDomain.GetAss ...

  8. [原创]SpringBoot上传图片踩的坑

    最近项目里面有个需求,要上传图片到阿里云的OSS服务.所以需要写个上传图片的接口给前端. 这个简单的接口本来就给分配了1个工时,感觉也蛮简单的.但编码过程中遇到了好几个问题,现在一一记录下来,避免再次 ...

  9. 2019 CCPC-Wannafly Winter Camp Day1 (Div2, onsite)

    solve:4/11 补题:6/11 A 机器人 补题:zz 这是一道分类讨论的题目,有一个规律就是如果必须要从第一个区到第二个区,那么最多转区两次(1到2一次,2到1一次),然后分类讨论即可,只要细 ...

  10. grunt 实例构建(四)

    相关插件的引用: grunt-usemin  对页面的操作 grunt-contrib-cssmin  压缩css load-grunt-tasks 瘦身gruntfile grunt-rev给md5 ...