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 多个 ...
随机推荐
- delete和delete[]
c++中对new申请的内存的释放方式有delete和delete[两种方式,到底这两者有什么区别呢? 1.我们通常从教科书上看到这样的说明:delete 释放new分配的单个对象指针指向的内存dele ...
- GCD 多线程 ---的记录 iOS
先写一个GCD static UserInfoVoModel *userInfoShare = nil; +(instancetype)shareUserInfoVoModel { static di ...
- android 下Protobuff框架性能测试结果
android 下Protobuff常用的框架有三个: protobuff自身, square出的wire , protostuff 由于protobuff会为每个属性生成大量不常用的方法,当程序比 ...
- Winfrom 提示消息框公共类
1.Winfrom项目经常会使用到消息提示,一般都使用MessageBox.Show方法,但是像错误提示,询问提示,警告提示写起来就有点复杂了,并且后面几种提示都带有图标,但是MessageBox.S ...
- 我的JS 中级学习篇
在codefordream上进入中级学习后,感觉立马从js的基础学习往前跳了好远,上面的东西好像都是第一次看到一样.这时候才发现,说来也曾接触过js,但是这时候才发现对js的认识就停在知道两点:js中 ...
- hive取数时如果遇到这种报错
如果你hive取数时遇到这种报错:ParseException line 1:78 cannot recognize input near '<EOF>' '<EOF>' '& ...
- ios常用资源网址链接
M了个J博客 http://www.cnblogs.com/mjios/tag/objective-c/ Cocoa China http://www.cocoachina.com git网 ht ...
- [转]支持向量机SVM总结
首先,对于支持向量机(SVM)的简单总结: 1. Maximum Margin Classifier 2. Lagrange Duality 3. Support Vector 4. Kernel 5 ...
- jprofiler安装图解 ( 7_1 )
环境: 1.sun jdk1.6.0 2.jprofiler_windows_6_0_2.exe 安装 1. jdk, 安装略... 2. jprofiler安装 一路next 到Enter lice ...
- UE4从零搭建CF游戏关卡(蓝图篇)
一 往关卡中放置物体 二 Static Mesh 和 BSP 从今天开始我们要建立一个类似CF游戏的场景,不写一句代码,纯蓝图实现. 三 英语学习 今天早上开会,经理说了一件让我震惊的事情,她说最近大 ...