华为云AI:轻松实现图像识别调用

05-13 1646阅读

文章目录

  • 前言
  • 一、环境配置
    • 关键步骤
    • 二、图像识别实例
      • 媒资图像标签
      • 名人识别
      • 总结

        前言

        基于华为云AI服务和java使用SDK实现图像识别,主要以媒资图像标签和名人识别为例。


        一、环境配置

        • Maven(没有直接下载华为的SDK包,而是使用Maven安装依赖)
        • JDK19(官方的SDK包要求JDK版本必须高于JDK8版本,大家根据自己只要满足版本要求即可)
        • 开发工具:IDEA 2023.3(其他版本也可)
          • 能创建Maven项目即可
          • 开通图像识别服务(目前是免费体验):这里我开通的是图像标签/媒资图像标签和名人识别服务。
          • 设置访问密钥
          • 服务区域:我开通的服务区域是华北-北京四

            关键步骤

            Maven项目的创建和Java环境变量的配置我就不再赘诉,这是大家学习java早已熟练掌握的,这里只讲诉易错的。

            开通图像识别服务

            华为云首页就有云产品体验区(找不到就在搜索栏检索),勾选AI:

            华为云AI:轻松实现图像识别调用

            点击“立即体验”后,找到服务列表,开通你想要的服务(点击开通):

            华为云AI:轻松实现图像识别调用

            设置访问密钥

            在控制台找到“我的凭证”:

            华为云AI:轻松实现图像识别调用

            找到“访问密钥”,如果没有就新增,新增后一定要下载密钥的CSV文件,他会有提示让你下载,防止你忘记:

            华为云AI:轻松实现图像识别调用

            下载完csv文件后用记事本打开即可看到AK和SK:

            华为云AI:轻松实现图像识别调用

            Maven引入依赖配置

            版本可以自己切换

            		
            			com.huaweicloud.sdk
            			huaweicloud-sdk-image
            			3.1.8
            		
            		
            			com.alibaba
            			fastjson
            			1.2.70
            		
            		
            			org.apache.httpcomponents
            			httpcore
            			4.4.16
            		
            		
            			commons-codec
            			commons-codec
            			1.16.0
            		
            		
            			commons-io
            			commons-io
            			2.13.0
            		
            

            二、图像识别实例

            媒资图像标签

            功能介绍:对用户传入的图像可以返回图像中的物体名称、所属类别及置信度信息。

            使用图片是网上的,仅作学习使用:

            华为云AI:轻松实现图像识别调用

            代码如下:

            /**
             * @Version: 1.0.0
             * @Author: Dragon_王
             * @ClassName: RunImageMediaTaggingSolution
             * @Description: 媒资图像标签
             * @Date: 2024/1/8 11:51
             */
            /**
             * 此demo仅供测试使用,强烈建议使用SDK
             * 使用前需配置依赖jar包。jar包可通过下载SDK获取
             */
            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;
            import com.huaweicloud.sdk.image.v2.region.ImageRegion;
            import com.huaweicloud.sdk.image.v2.*;
            import com.huaweicloud.sdk.image.v2.model.*;
            public class RunImageMediaTaggingSolution {
                public static void main(String[] args) {
                    //此处需要输入您的AK/SK信息
                    String ak = "你的AK";
                    String sk = "你的SK";
                    ICredential auth = new BasicCredentials()
                            .withAk(ak)
                            .withSk(sk);
                    ImageClient client = ImageClient.newBuilder()
                            .withCredential(auth)
                            .withRegion(ImageRegion.valueOf("cn-north-4"))  //此处替换为您开通服务的区域
                            .build();
                    RunImageMediaTaggingRequest request = new RunImageMediaTaggingRequest();
                    ImageMediaTaggingReq body = new ImageMediaTaggingReq();
                    body.withThreshold(10f);
                    body.withLanguage("zh");
                    body.withUrl("https://tse2-mm.cn.bing.net/th/id/OIP-C.SIuEnb1-arhtDNqfdICVqAHaE7?rs=1&pid=ImgDetMain");  //此处替换为公网可以访问的图片地址
                    request.withBody(body);
                    try {
                        RunImageMediaTaggingResponse response = client.runImageMediaTagging(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());
                    }
                }
            }
            

            运行结果:

            华为云AI:轻松实现图像识别调用

            class RunImageMediaTaggingResponse {
                result: class ImageMediaTaggingResponseResult {
                    tags: [class ImageMediaTaggingItemBody {
                        confidence: 83.63
                        type: 动物
                        tag: 金毛犬
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 金毛犬
                            en: Golden retriever
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 动物
                            en: Animal
                        }
                        instances: []
                    }, class ImageMediaTaggingItemBody {
                        confidence: 81.78
                        type: 动物
                        tag: 金毛
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 金毛
                            en: Golden hair
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 动物
                            en: Animal
                        }
                        instances: []
                    }, class ImageMediaTaggingItemBody {
                        confidence: 77.00
                        type: 动物
                        tag: 金毛寻猎犬
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 金毛寻猎犬
                            en: Golden Retriever
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 动物
                            en: Animal
                        }
                        instances: []
                    }, class ImageMediaTaggingItemBody {
                        confidence: 62.60
                        type: 动物
                        tag: 贵妇犬
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 贵妇犬
                            en: Poodle
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 动物
                            en: Animal
                        }
                        instances: []
                    }, class ImageMediaTaggingItemBody {
                        confidence: 59.02
                        type: 生活
                        tag: 狗链
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 狗链
                            en: Dog chain
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 生活
                            en: Life
                        }
                        instances: []
                    }, class ImageMediaTaggingItemBody {
                        confidence: 53.84
                        type: 动物
                        tag: 宠物狗
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 宠物狗
                            en: Pet dog
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 动物
                            en: Animal
                        }
                        instances: []
                    }, class ImageMediaTaggingItemBody {
                        confidence: 48.01
                        type: 动物
                        tag: 狗狗
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 狗狗
                            en: Dog
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 动物
                            en: Animal
                        }
                        instances: []
                    }, class ImageMediaTaggingItemBody {
                        confidence: 44.02
                        type: 动物
                        tag: 犬
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 犬
                            en: Dog
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 动物
                            en: Animal
                        }
                        instances: []
                    }, class ImageMediaTaggingItemBody {
                        confidence: 42.11
                        type: 动物
                        tag: 纯种犬
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 纯种犬
                            en: Purebred dog
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 动物
                            en: Animal
                        }
                        instances: []
                    }, class ImageMediaTaggingItemBody {
                        confidence: 38.65
                        type: 动物
                        tag: 中华田园犬
                        i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                            zh: 中华田园犬
                            en: Chinese pastoral dog
                        }
                        i18nType: class ImageMediaTaggingItemBodyI18nType {
                            zh: 动物
                            en: Animal
                        }
                        instances: []
                    }]
                }
            }
            Process finished with exit code 0
            

            名人识别

            功能介绍:分析并识别图片中包含的敏感人物、明星及网红人物,返回人物信息及人脸坐标。

            使用照片是网上的照片,仅作学习使用:

            华为云AI:轻松实现图像识别调用

            代码如下:

            /**
             * @Version: 1.0.0
             * @Author: Dragon_王
             * @ClassName: RunCelebrityRecognitionSolution
             * @Description: 媒资标签
             * @Date: 2024/1/9 16:23
             */
            import com.alibaba.fastjson.JSON;
            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;
            import com.huaweicloud.sdk.image.v2.ImageClient;
            import com.huaweicloud.sdk.image.v2.model.RunCelebrityRecognitionRequest;
            import com.huaweicloud.sdk.image.v2.region.ImageRegion;
            import com.huaweicloud.sdk.image.v2.model.CelebrityRecognitionReq;
            import com.huaweicloud.sdk.image.v2.model.RunCelebrityRecognitionResponse;
            public class RunCelebrityRecognitionSolution {
                public static void main(String[] args) {
                    // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全
                    // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK
                    String ak = "你的AK";
                    String sk = "你的SK";
                    ICredential auth = new BasicCredentials()
                            .withAk(ak)
                            .withSk(sk);
                    ImageClient client = ImageClient.newBuilder()
                            .withCredential(auth)
                            .withRegion(ImageRegion.valueOf("cn-north-4"))  //此处替换为您开通服务的区域
                            .build();
                    RunCelebrityRecognitionRequest request = new RunCelebrityRecognitionRequest();
                    CelebrityRecognitionReq body = new CelebrityRecognitionReq();
                    body.withThreshold(0f);
                    body.withUrl("https://tse1-mm.cn.bing.net/th/id/OIP-C.tM6jifW1xaCDP7Kia9QiYwHaKD?rs=1&pid=ImgDetMain");   //此处替换为公网可以访问的图片地址
                    request.withBody(body);
                    try {
                        RunCelebrityRecognitionResponse response = client.runCelebrityRecognition(request);
                        System.out.println(response.getHttpStatusCode());
                        System.out.println(JSON.toJSONString(response));
                    } 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());
                    }
                }
            }
            

            运行结果:

            200
            {"httpStatusCode":200,"result":[{"confidence":0.9985551,"faceDetail":{"w":132,"h":186,"x":197,"y":79},"label":"成龙"}]}
            Process finished with exit code 0
            

            总结

            以上就是华为云的AI图像识别服务调用,这里提供官方文档

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]