CognitiveJ一个Java的人脸图像识别开源分析库
CognitiveJ 是一个开源的,支持 Java 8 API 的库,用于管理和编排 Java 应用和微软的Cognitive(Project Oxford)机器学习和图像处理库的项目,可以让你查询以及分析图像。
一:人脸识别
1.人脸检测– 捕获脸部、性别、年龄等相关脸部特征以及图像的标志
2.表情检测 – 根据图像中的脸部信息推断出表情状态
3.验证 – 验证同一个人的两张不同表情的差异
4.识别 – 根据已知的人里识别出某个人
5.查找相似 —— 对人脸检测、分组以及排名以找出类似的人脸
6.分组 – 基于脸部特征进行人的分组
7.Person Group/Person/Face Lists; 创建、管理和训练分组、脸部和人列表用于识别、分组和查找相似的脸部特征
二:视觉
1.图像描述 —— 描述图像的可视化内容并返回真实世界中的表述方式
2.图像分析 —— 抽取图像中的关键信息,例如可判断图片是否包含色情性质
3.OCR – 检测和提取图像中的文字
4.缩略图 – 根据图像的关键点来创建缩略图
三:图层 (体验阶段)
1.应用图像层到多个图像上,将发现的特征进行可视化展现
2.在人脸和图像上使用字幕
3.形象的描述脸部和视觉特征集
4.对图像中的人脸进行像素化
四:其他特性
1.支持本地和远程图像
2.参数校验
五:代码示例
1.Gradle
repositories {
jcenter()
}
dependencies {
compile "cognitivej:cognitivej:0.6.2"
}
2.Maven支持
<dependency>
<groupId>cognitivej</groupId>
<artifactId>cognitivej</artifactId>
<version>0.6.2</version>
<type>pom</type>
</dependency>
3.链式构建器 - 该构建器是 MS Cognitive REST 服务的简单轻量级封装,用来管理参数和响应、HTTP 通讯和重试策略的编排。构建器使用链式设计模式允许方便的在资源处理过程中进行操作。
封装器 简单的关于请求、响应和参数对象的封装,例如 Face, FaceAttributes,Person 等等
4.脸部检测 可以检测图片中的人脸,并返回一组脸部结果集合。
public static void main(String[] args) {
FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
getProperty("azure.cognitive.emotion.subscriptionKey"));
ImageOverlayBuilder imageOverlayBuilder = ImageOverlayBuilder.builder(IMAGE_URL);
imageOverlayBuilder.outlineFacesOnImage(faceScenarios.findFaces(IMAGE_URL), RectangleType.FULL,
CognitiveJColourPalette.STRAWBERRY).launchViewer();
}
5.脸部特征 用来检测图片中人脸的特征标志信息
public static void main(String[] args) throws IOException {
FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
getProperty("azure.cognitive.emotion.subscriptionKey"));
Face faces = faceScenarios.findSingleFace(IMAGE_URL);
ImageOverlayBuilder.builder(IMAGE_URL).outFaceLandmarksOnImage(faces).launchViewer();
}
6.脸部属性检测 显示所检测到的脸部的属性,例如性别、年龄、是否佩戴眼镜等
public static void main(String[] args) {
FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
getProperty("azure.cognitive.emotion.subscriptionKey"));
List<Face> faces = faceScenarios.findFaces(IMAGE_URL);
ImageOverlayBuilder.builder(IMAGE_URL).outlineFacesOnImage(faces, RectangleType.CORNERED,
CognitiveJColourPalette.MEADOW).writeFaceAttributesToTheSide(faces, CognitiveJColourPalette.MEADOW).launchViewer();
}
7.脸部验证 用来验证两个不同的脸部是否属于一个人,包含一个检测的可靠指数。
public static void main(String[] args) {
FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
getProperty("azure.cognitive.emotion.subscriptionKey"));
ImageOverlayBuilder.builder(CANDIDATE_1);
imageOverlayBuilder.verify(CANDIDATE_2, faceScenarios.verifyFaces(CANDIDATE_1, CANDIDATE_2)).launchViewer();
}
8.脸部标识 标识出图像中的人。在标识之前,我们需要提供一组候选样本,当前最多支持 1000 个候选样本。
public static void main(String[] args) {
FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
getProperty("azure.cognitive.emotion.subscriptionKey"));
ImageOverlayBuilder imageOverlayBuilder = ImageOverlayBuilder.builder(IMAGE);
List<ImageHolder> candidates = candidates();
People people = ScenarioHelper.createPeopleFromHoldingImages(candidates, ImageNamingStrategy.DEFAULT);
String groupId = faceScenarios.createGroupWithPeople(randomAlphabetic(6).toLowerCase(), people);
}
9.脸部像素化 将图像中所有的脸部信息标识出来并进行像素化。
public static void main(String[] args) {
FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
getProperty("azure.cognitive.emotion.subscriptionKey"));
ImageOverlayBuilder imageOverlayBuilder = ImageOverlayBuilder.builder(IMAGE);
faceScenarios.findFaces(IMAGE).stream().forEach(imageOverlayBuilder:: pixelateFaceOnImage);
imageOverlayBuilder.launchViewer();
}
public static void main(String[] args) {
FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
getProperty("azure.cognitive.emotion.subscriptionKey"));
ImageOverlayBuilder.builder(IMAGE_URL).outlineEmotionsOnImage(faceScenarios.findEmotionFaces(IMAGE_URL)).launchViewer();
}
10.视觉描述 使用人类可读的方式来分析和描述图像中的内容。
public static void main(String[] args) {
ComputerVisionScenario computerVisionScenario = new ComputerVisionScenario(getProperty("azure.cognitive.vision.subscriptionKey"));
ImageDescription imageDescription = computerVisionScenario.describeImage(IMAGE_URL);
ImageOverlayBuilder.builder(IMAGE_URL).describeImage(imageDescription).launchViewer();
}
11.OCR用来分析和提取图像中包含的文字信息。
public static void main(String[] args) {
ComputerVisionScenario computerVisionScenario = new ComputerVisionScenario(getProperty("azure.cognitive.vision.subscriptionKey"));
OCRResult ocrResult = computerVisionScenario.ocrImage(IMAGE_URL);
ImageOverlayBuilder.builder(IMAGE_URL).ocrImage(ocrResult).launchViewer();
}
CognitiveJ一个Java的人脸图像识别开源分析库的更多相关文章
- 一个Java内存可见性问题的分析
如果熟悉Java并发编程的话,应该知道在多线程共享变量的情况下,存在“内存可见性问题”: 在一个线程中对某个变量进行赋值,然后在另外一个线程中读取该变量的值,读取到的可能仍然是以前的值: 这里并非说的 ...
- 学习OpenSeadragon之一(一个显示多层图片的开源JS库)
OpenSeadragon是一个可以显示多层图片(可放大缩小)的Web库,基于JavaScript,支持桌面和手机. 由于我项目需要,却没有找到任何中文教程,因此在官网上一边学习,一边总结于此. 官网 ...
- 一个Java语言所写的shop网站框架明细
核心框架Spring Framework :作为一个优秀的开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用 ...
- Pugixml一种快速解析XML文件的开源解析库
Pugixml是一个轻量级的C++ XML开源解析库,DOM形式的解析器.接口和丰富的遍历和修改操作,快速的解析,此外支持XPath1.0实现数据查询,支持unicode编码: 使用Pugixml可通 ...
- 我的Android进阶之旅------>【强力推荐】Android开源图表库XCL-Charts版本发布及展示页
因为要做图表相关的应用,后来百度发现了一个很好的Android开源图表库(XCL-Charts is a free charting library for Android platform.) 下面 ...
- 【通信】Netty JBOSS提供的一个java开源框架
Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序dsf. 也就是说,Netty 是一个基 ...
- JVM源码分析之一个Java进程究竟能创建多少线程
JVM源码分析之一个Java进程究竟能创建多少线程 原创: 寒泉子 你假笨 2016-12-06 概述 虽然这篇文章的标题打着JVM源码分析的旗号,不过本文不仅仅从JVM源码角度来分析,更多的来自于L ...
- 开源一个Java Class实现Openfire登陆、推出、消息发送,方便其他系统集成IM功能了
开源一个Java Class实现Openfire登陆.推出.消息发送 N年前写的,希望对Openfire开发新手有帮助哦 import java.util.*; import java.io.*; ...
- 介绍n款计算机视觉库/人脸识别开源库/软件
计算机视觉库 OpenCV OpenCV是Intel®开源计算机视觉库.它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法. OpenCV 拥有包括 300 多个 ...
随机推荐
- 利用matlab进行协方差运算
本文全部参考自: http://www.cnblogs.com/welen/articles/5535042.html#undefined 知识点一: MATLAB中四个取整函数具体使用方法如下:Ma ...
- Spark RDD编程核心
一句话说,在Spark中对数据的操作其实就是对RDD的操作,而对RDD的操作不外乎创建.转换.调用求值. 什么是RDD RDD(Resilient Distributed Dataset),弹性分布式 ...
- JAVA日常练习—程序输入string转化为int并求和
实验结果如图:
- Unity编程标准导引-3.2 MonoBehavior 组件父类重构
本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 3.2MonoBehavior 组件父类重构 为了让我们的组件类用起来更方便,我们将上一节的 ...
- c#访问存储过程
// 2015/07/04 // 访问存储过程 using System; using System.Collections.Generic; using System.Linq; using Sys ...
- SVM matlab 代码详解说明
x=[0 1 0 1 2 -1];y=[0 0 1 1 2 -1];z=[-1 1 1 -1 1 1]; %其中,(x,y)代表二维的数据点,z 表示相应点的类型属性. data=[1,0;0,1;2 ...
- C++ traits技术浅谈
前言 traits,又被叫做特性萃取技术,说得简单点就是提取"被传进的对象"对应的返回类型,让同一个接口实现对应的功能.因为STL的算法和容器是分离的,两者通过迭代器链接.算法的实 ...
- 自定义checkbox/radio
一. label标签 1. 概念: HTML <label>元素表示用户界面中项目的标题.它通常关联一个控件,或者是将控件放置在label元素内,或者是用作其属性.这样的控制称作label ...
- rhel 6.7 离线安装docker
本机系统信息 [test@rhel67temp ~]$ uname -a Linux rhel67temp 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:3 ...
- win8系统不小心禁用了管理员权限怎么解决
第一步:查看系统有没有其他管理员账户 按win+x键,然后选择命令提示符 点击命令提示符打开窗口,输入net localgroup Administrators命令,然后回车 如上图,查看窗口中的&q ...