云服务、API、SDK,调试,查看,我都行
浏览短文您能够学习到:人工智能AI人脸的辨认、检测、搜寻、比对
1、IntelliJ IDEA 之API插件介绍
API插件反对 VS Code IDE、IntelliJ IDEA等平台、以及华为云自研 CodeArts IDE,基于华为云服务提供的能力,帮忙开发者更高效、便捷的搭建利用。API插件关联华为云服务下的 API Explorer、DevStar、CodeLabs、SDK 核心和 CLI 核心产品,致力于为开发者提供更稳固、疾速、平安的编程体验。
在本插件中,咱们提供了但不局限于如下的性能:
对接华为云API开放平台,反对用户检索API、查看API文档、调试API、以及提供SDK示例代码供用户学习如何应用API。
提供华为云SDK代码片段补全性能,SDK依赖包主动引入,减速用户集成华为云API。
对接华为云开发体验馆Codelabs,提供500+云服务代码示例,向导式教程帮忙用户疾速学习。
阐明:
在IntelliJ IDEA等系列平台和VS Code IDE,华为云API插件的名称是Huawei Cloud API。而在CodeArts IDE,API插件是IDE原生内置的,名称是华为云API开发套件。
API插件在IntelliJ IDEA等系列平台和VS Code IDE的应用依赖底座插件,请提前装置底座插件。
2、API插件装置--IntelliJ IDEA
2.1 IntelliJ IDEA等平台
装置筹备:下载并装置JDK1.8或更高版本。下载并装置IntelliJ IDEA 2020.2或更高版本。
须知:IntellIj平台同时撑持包含Goland、Pycharm等在内的IDE,若在其它相干IDE上开发,请下载配置好对应语言的编译器或者解释器。这里以IDEA为例介绍IntelliJ平台插件的装置流程,其余IntelliJ系列的IDE请参考IDEA。
开始装置:
您能够在间接在IDE插件市场或者间接在JetBrains插件市场下载离线包装置。
https://developer.huaweicloud.com/develop/toolkit.html
IDE装置
- 在IntelliJ IDEA顶部菜单栏中抉择File > Settings,在Settings对话框的左侧导航栏中单击Plugins。
- Plugins区域单击Marketplace,在搜寻栏中输出Huawei Cloud API。
- Search Results区域会呈现Huawei Cloud API,单击Install,实现后重启IDE。
离线包装置:
- 进入插件市场搜寻Huawei Cloud API,进入插件详情页,在Versions页签下抉择想要版本的API插件,点击Download下载离线的插件压缩包保留到本地。。
- 在IntelliJ IDEA顶部菜单栏中抉择File > Settings,在Settings对话框的左侧导航栏中单击Plugins。
- 在Plugins区域单击 ,再单击Install Plugin from Disk...。
- 在Choose Plugin File对话框中抉择离线安装包(不必解压),并依照IntelliJ IDEA装置页面的提醒,实现后续装置步骤。
阐明:若以后您想要装置插件的IntelliJ IDE曾经在桌面关上,则进入插件市场搜寻Huawei Cloud API,进入插件详情页,在右上角会辨认到本地曾经关上的IDE,点击相应按钮,在弹出的IDE窗口中点击ok,则IDE后盾会开始装置相应版本的API插件。
装置验证:在IntelliJ系列平台上装置插件胜利后在左侧的导航栏中能够看到Huawei Cloud Toolkit图标,点击后面板会呈现Huawei Cloud API的字样,则阐明装置胜利。
2.2 华为云API
https://developer.huaweicloud.com/develop/toolkit.html
左侧展现API列表,能够查问所有API,目前云服务206,APIs9213
3、抓住偷偷藏不住的你
3.1 后期筹备
华为云提供了人脸识别服务端SDK,您能够间接集成服务端SDK来调用人脸识别服务的相干API,从而实现对人脸识别服务的疾速操作。
该示例展现了如何通过Java版SDK实现人脸识别。
开发前筹备:
- 已注册华为云,并实现实名认证 。
- 已订阅人脸识别服务。
- 已具备开发环境,反对Java JDK 1.8及其以上版本。
- 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 拜访密钥”页面上创立和查看您的AK/SK。具体请参见 拜访密钥 。
- 已获取直播服务对应区域的我的项目ID,请在华为云控制台“我的凭证 > API凭证”页面上查看我的项目ID。具体请参见 API凭证。
装置SDK:
您能够通过Maven配置所依赖的人脸识别服务SDK
<dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-frs</artifactId> <version>3.1.19</version></dependency>
开始应用:
导入依赖模块
import com.huaweicloud.sdk.core.auth.ICredential;import com.huaweicloud.sdk.core.auth.BasicCredentials;import com.huaweicloud.sdk.core.exception.ConnectionException;import com.huaweicloud.sdk.core.exception.RequestTimeoutException;import com.huaweicloud.sdk.core.exception.ServiceResponseException;
//v2版本sdk
import com.huaweicloud.sdk.frs.v2.region.FrsRegion;import com.huaweicloud.sdk.frs.v2.*;import com.huaweicloud.sdk.frs.v2.model.*;
初始化认证信息
public static ICredential getCredential(String ak, String sk) { return new BasicCredentials() .withAk(ak) .withSk(sk);}
相干参数阐明如下所示:
ak:华为云账号Access Key。
sk:华为云账号Secret Access Key 。
初始化人脸识别服务的客户端
public static FrsClient getClient(Region region, ICredential auth) { // 初始化人脸识别服务的客户端 return FrsClient.newBuilder() .withCredential(auth) .withRegion(region) // 抉择服务所在区域 FrsRegion.CN_NORTH_4 .build();}
相干参数阐明如下所示:
service region: 服务所在区域,例如:
CN_NORTH_1 北京一
CN_NORTH_4 北京四
SDK demo代码解析
3.2 人脸识别/检测
DetectFaceByBase64Request detectRequest = new DetectFaceByBase64Request();FaceDetectBase64Req faceDetectBase64Req = new FaceDetectBase64Req();faceDetectBase64Req.withImageBase64("/9j/4AAQSkZJRgABAQAAAQABAAD...");faceDetectBase64Req.withAttributes("2");detectRequest.setBody(faceDetectBase64Req);try { DetectFaceByBase64Response detectResponse = client.detectFaceByBase64(detectRequest); System.out.println(detectResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}3.2.1 人脸比对CompareFaceByBase64Request compareRequest = new CompareFaceByBase64Request();FaceCompareBase64Req faceCompareBase64Req = new FaceCompareBase64Req();faceCompareBase64Req.withImage1Base64("/9j/4AAQSkZJRgABAQAAAQABAAD...");faceCompareBase64Req.withImage2Base64("/9j/4AAQSkZJRgABAQAAAQABAAD...");compareRequest.withBody(faceCompareBase64Req);try { CompareFaceByBase64Response compareResponse = client.compareFaceByBase64(compareRequest); System.out.println(compareResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
3.2.2 人脸搜寻
SearchFaceByBase64Request searchRequest = new SearchFaceByBase64Request();searchRequest.withFaceSetName("face_set_name");FaceSearchBase64Req faceSearchBase64Req = new FaceSearchBase64Req();List<Map<String, String>> listbodySort = new ArrayList<>();Map<String, String> map = new HashMap<>();map.put("timestamp","asc");listbodySort.add(map);List<String> listbodyReturnFields = new ArrayList<>();listbodyReturnFields.add("timestamp");listbodyReturnFields.add("id");faceSearchBase64Req.withSort(listbodySort);faceSearchBase64Req.withReturnFields(listbodyReturnFields);faceSearchBase64Req.withImageBase64("/9j/4AAQSkZJRgABAQAAAQABAAD...");searchRequest.withBody(faceSearchBase64Req);try { SearchFaceByBase64Response searchResponse = client.searchFaceByBase64(searchRequest); System.out.println(searchResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
创建人脸库
CreateFaceSetRequest createFaceSetRequest = new CreateFaceSetRequest();CreateFaceSetReq createFaceSetReq = new CreateFaceSetReq();createFaceSetReq.withFaceSetName("face_set_name");Map<String, TypeInfo> stringTypeInfoMap = new HashMap<>();TypeInfo typeInfo = new TypeInfo();typeInfo.withType("long");stringTypeInfoMap.put("timestamp", typeInfo);createFaceSetReq.withExternalFields(stringTypeInfoMap);createFaceSetRequest.withBody(createFaceSetReq);try { CreateFaceSetResponse createFaceSetResponse = client.createFaceSet(createFaceSetRequest); System.out.println(createFaceSetResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
查问人脸库
ShowFaceSetRequest showFaceSetRequest = new ShowFaceSetRequest();showFaceSetRequest.withFaceSetName("face_set_name");try { ShowFaceSetResponse showFaceSetResponse = client.showFaceSet(showFaceSetRequest); System.out.println(showFaceSetResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
查问所有人脸库
ShowAllFaceSetsRequest showAllFaceSetsRequest = new ShowAllFaceSetsRequest();try { ShowAllFaceSetsResponse showAllFaceSetsResponse = client.showAllFaceSets(showAllFaceSetsRequest); System.out.println(showAllFaceSetsResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
删除人脸库
DeleteFaceSetRequest deleteFaceSetRequest = new DeleteFaceSetRequest();deleteFaceSetRequest.withFaceSetName("face_set_name");try { DeleteFaceSetResponse deleteFaceSetResponse = client.deleteFaceSet(deleteFaceSetRequest); System.out.println(deleteFaceSetResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
增加人脸
//add faceAddFacesByBase64Request addFacesByBase64Request = new AddFacesByBase64Request();addFacesByBase64Request.withFaceSetName("face_set_name");AddFacesBase64Req addFacesBase64Req = new AddFacesBase64Req();addFacesBase64Req.withExternalFields("{"timestamp":12}");addFacesBase64Req.withImageBase64("9j/4AAQSkZJRgABAQAAAQABAAD...");addFacesByBase64Request.withBody(addFacesBase64Req);try { AddFacesByBase64Response addFacesByBase64Response = client.addFacesByBase64(addFacesByBase64Request); System.out.println(addFacesByBase64Response.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
删除人脸
//delete face by faceIdDeleteFaceByFaceIdRequest deleteFaceByFaceIdRequest = new DeleteFaceByFaceIdRequest();deleteFaceByFaceIdRequest.withFaceSetName("face_set_name");deleteFaceByFaceIdRequest.withFaceId("iexEBb6t");try { DeleteFaceByFaceIdResponse deleteFaceByFaceIdResponse = client.deleteFaceByFaceId(deleteFaceByFaceIdRequest); System.out.println(deleteFaceByFaceIdResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
批量删除人脸
BatchDeleteFacesRequest batchDeleteFacesRequest = new BatchDeleteFacesRequest();batchDeleteFacesRequest.withFaceSetName("face_set_name");DeleteFacesBatchReq deleteFacesBatchReq = new DeleteFacesBatchReq();deleteFacesBatchReq.withFilter("age:[20 TO 30]");batchDeleteFacesRequest.withBody(deleteFacesBatchReq);try { BatchDeleteFacesResponse batchDeleteFacesResponse = client.batchDeleteFaces(batchDeleteFacesRequest); System.out.println(batchDeleteFacesResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
更新人脸
UpdateFaceRequest updateFaceRequest = new UpdateFaceRequest();updateFaceRequest.withFaceSetName("face_set_name");UpdateFaceReq updateFaceReq = new UpdateFaceReq();updateFaceReq.withFaceId("iexEBb6t");updateFaceRequest.withBody(updateFaceReq);try { UpdateFaceResponse response = client.updateFace(updateFaceRequest); System.out.println(response.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
查问人脸
//show faces by faceIdShowFacesByFaceIdRequest showFacesByFaceIdRequest = new ShowFacesByFaceIdRequest();showFacesByFaceIdRequest.withFaceSetName("face_set_name");showFacesByFaceIdRequest.withFaceId("iexEBb6t");try { ShowFacesByFaceIdResponse response = client.showFacesByFaceId(showFacesByFaceIdRequest); System.out.println(response.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
3.3 活体辨认/检测
3.3.1 动作活体检测
//detect live by base64DetectLiveByBase64Request request = new DetectLiveByBase64Request();LiveDetectBase64Req body = new LiveDetectBase64Req();body.withActions("1,2,3,4");body.withVideoBase64("/9j/4AAQSkZJRgABAQAAAQABAAD...");request.withBody(body);try { DetectLiveByBase64Response response = client.detectLiveByBase64(request); System.out.println(response.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
3.3.2默活体检测
//detect live face by base64DetectLiveFaceByBase64Request request = new DetectLiveFaceByBase64Request();LiveDetectFaceBase64Req body = new LiveDetectFaceBase64Req();body.withImageBase64("/9j/4AAQSkZJRgABAQAAAQABAAD...");request.withBody(body);try { DetectLiveFaceByBase64Response response = client.detectLiveFaceByBase64(request); System.out.println(response.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
3.4人脸搜寻
SearchFaceByBase64Request searchRequest = new SearchFaceByBase64Request();searchRequest.withFaceSetName("face_set_name");FaceSearchBase64Req faceSearchBase64Req = new FaceSearchBase64Req();List<Map<String, String>> listbodySort = new ArrayList<>();Map<String, String> map = new HashMap<>();map.put("timestamp","asc");listbodySort.add(map);List<String> listbodyReturnFields = new ArrayList<>();listbodyReturnFields.add("timestamp");listbodyReturnFields.add("id");faceSearchBase64Req.withSort(listbodySort);faceSearchBase64Req.withReturnFields(listbodyReturnFields);faceSearchBase64Req.withImageBase64("/9j/4AAQSkZJRgABAQAAAQABAAD...");searchRequest.withBody(faceSearchBase64Req);try { SearchFaceByBase64Response searchResponse = client.searchFaceByBase64(searchRequest); System.out.println(searchResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
3.5 人脸比对
CompareFaceByBase64Request compareRequest = new CompareFaceByBase64Request();FaceCompareBase64Req faceCompareBase64Req = new FaceCompareBase64Req();faceCompareBase64Req.withImage1Base64("/9j/4AAQSkZJRgABAQAAAQABAAD...");faceCompareBase64Req.withImage2Base64("/9j/4AAQSkZJRgABAQAAAQABAAD...");compareRequest.withBody(faceCompareBase64Req);try {CompareFaceByBase64Request compareRequest = new CompareFaceByBase64Request();FaceCompareBase64Req faceCompareBase64Req = new FaceCompareBase64Req();faceCompareBase64Req.withImage1Base64("/9j/4AAQSkZJRgABAQAAAQABAAD...");faceCompareBase64Req.withImage2Base64("/9j/4AAQSkZJRgABAQAAAQABAAD...");compareRequest.withBody(faceCompareBase64Req);try { CompareFaceByBase64Response compareResponse = client.compareFaceByBase64(compareRequest); System.out.println(compareResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());} CompareFaceByBase64Response compareResponse = client.compareFaceByBase64(compareRequest); System.out.println(compareResponse.toString());} catch (ConnectionException e) { e.printStackTrace();} catch (RequestTimeoutException e) { e.printStackTrace();} catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg());}
4、偷偷藏不住的你
身份验证
应用人脸检测与比对性能,可进行身份核实,实用于机场、海关等物证合一验证场景。
电子考勤
人脸检测及比对性能实用于客户企业对员工进行电子考勤。
客流剖析
客流剖析对于商场具备重要价值。基于人脸识别、搜寻技术,帮忙客户精准营销。
5、参考文献
https://support.huaweicloud.com/usermanual-cbs/cbs_01_0029.html
https://console.huaweicloud.com/cbs/?region=cn-north-4#/cbs/m...
6、体验插件的魅力
华为云devkit已上线: