开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
图像识别

    红酒识别

    接口描述

    该服务用于识别红酒标签,即对于输入的一张图片(可正常解码,长宽比适宜,且酒标清晰可见),输出图片中的红酒名称、国家、产区、酒庄、类型、糖分、葡萄品种、酒品描述等信息。可识别数十万中外常见红酒。

    注意:图片中酒标要清晰可见,示例图片如下

    请求说明

    请求示例

    HTTP 方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine

    URL参数:

    参数
    access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

    Header如下:

    参数
    Content-Type application/x-www-form-urlencoded

    Body中放置请求参数,参数详情如下:

    请求参数

    参数 是否必选 类型 说明
    image 和url二选一 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式。注意:图片需要base64编码、去掉编码头(data:image/jpg;base64,)后,再进行urlencode。
    url 和image二选一 string 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。

    请求示例代码

    提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

    提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

    curl -i -k 'https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine?access_token=【调用鉴权接口获取的token】' --data 'image=【图片Base64编码,需UrlEncode】' -H 'Content-Type:application/x-www-form-urlencoded'
    <?php
    /**
     * 发起http post请求(REST API), 并获取REST请求的结果
     * @param string $url
     * @param string $param
     * @return - http response body if succeeds, else false.
     */
    function request_post($url = '', $param = '')
    {
        if (empty($url) || empty($param)) {
            return false;
        }
    
        $postUrl = $url;
        $curlPost = $param;
        // 初始化curl
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $postUrl);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        // 要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        // post提交方式
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        // 运行curl
        $data = curl_exec($curl);
        curl_close($curl);
    
        return $data;
    }
    
    $token = '[调用鉴权接口获取的token]';
    $url = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine?access_token=' . $token;
    $img = file_get_contents('[本地文件路径]');
    $img = base64_encode($img);
    $bodys = array(
        'image' => $img
    );
    $res = request_post($url, $bodys);
    
    var_dump($res);
    package com.baidu.ai.aip;
    
    import com.baidu.ai.aip.utils.Base64Util;
    import com.baidu.ai.aip.utils.FileUtil;
    import com.baidu.ai.aip.utils.HttpUtil;
    
    import java.net.URLEncoder;
    
    /**
    * 细粒度图像识别—红酒识别
    */
    public class Redwine {
    
        /**
        * 重要提示代码中所需工具类
        * FileUtil,Base64Util,HttpUtil,GsonUtils请从
        * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
        * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
        * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
        * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
        * 下载
        */
        public static String redwine() {
            // 请求url
            String url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine";
            try {
                // 本地文件路径
                String filePath = "[本地文件路径]";
                byte[] imgData = FileUtil.readFileByBytes(filePath);
                String imgStr = Base64Util.encode(imgData);
                String imgParam = URLEncoder.encode(imgStr, "UTF-8");
    
                String param = "image=" + imgParam;
    
                // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
                String accessToken = "[调用鉴权接口获取的token]";
    
                String result = HttpUtil.post(url, accessToken, param);
                System.out.println(result);
                return result;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static void main(String[] args) {
            Redwine.redwine();
        }
    }
    # encoding:utf-8
    
    import requests
    import base64
    
    '''
    细粒度图像识别—红酒识别
    '''
    
    request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine"
    # 二进制方式打开图片文件
    f = open('[本地文件]', 'rb')
    img = base64.b64encode(f.read())
    
    params = {"image":img}
    access_token = '[调用鉴权接口获取的token]'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print (response.json())
    #include <iostream>
    #include <curl/curl.h>
    
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    const static std::string request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine";
    static std::string redwine_result;
    /**
     * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
     * @param 参数定义见libcurl文档
     * @return 返回值定义见libcurl文档
     */
    static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
        // 获取到的body存放在ptr中,先将其转换为string格式
        redwine_result = std::string((char *) ptr, size * nmemb);
        return size * nmemb;
    }
    /**
     * 细粒度图像识别—红酒识别
     * @return 调用成功返回0,发生错误返回其他错误码
     */
    int redwine(std::string &json_result, const std::string &access_token) {
        std::string url = request_url + "?access_token=" + access_token;
        CURL *curl = NULL;
        CURLcode result_code;
        int is_success;
        curl = curl_easy_init();
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_URL, url.data());
            curl_easy_setopt(curl, CURLOPT_POST, 1);
            curl_httppost *post = NULL;
            curl_httppost *last = NULL;
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, "【base64_img】", CURLFORM_END);
    
            curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
            result_code = curl_easy_perform(curl);
            if (result_code != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                        curl_easy_strerror(result_code));
                is_success = 1;
                return is_success;
            }
            json_result = redwine_result;
            curl_easy_cleanup(curl);
            is_success = 0;
        } else {
            fprintf(stderr, "curl_easy_init() failed.");
            is_success = 1;
        }
        return is_success;
    }
    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Web;
    
    namespace com.baidu.ai
    {
        public class Redwine
        {
            // 细粒度图像识别—红酒识别
            public static string redwine()
            {
                string token = "[调用鉴权接口获取的token]";
                string host = "https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine?access_token=" + token;
                Encoding encoding = Encoding.Default;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
                request.Method = "post";
                request.KeepAlive = true;
                // 图片的base64编码
                string base64 = getFileBase64("[本地图片文件]");
                String str = "image=" + HttpUtility.UrlEncode(base64);
                byte[] buffer = encoding.GetBytes(str);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
                string result = reader.ReadToEnd();
                Console.WriteLine("细粒度图像识别—红酒识别:");
                Console.WriteLine(result);
                return result;
            }
    
            public static String getFileBase64(String fileName) {
                FileStream filestream = new FileStream(fileName, FileMode.Open);
                byte[] arr = new byte[filestream.Length];
                filestream.Read(arr, 0, (int)filestream.Length);
                string baser64 = Convert.ToBase64String(arr);
                filestream.Close();
                return baser64;
            }
        }
    }

    返回说明

    返回参数

    字段 是否必选 类型 说明
    log_id uint64 请求标识码,随机数,唯一
    result dict 识别结果
    +hasdetail unit 判断是否返回详细信息(除红酒中文名之外的其他字段),含有返回1,不含有返回0
    +wineNameCn string 红酒中文名,无法识别返回空,示例:波斯塔瓦经典赤霞珠品丽珠半甜红葡萄酒
    +wineNameEn string 红酒英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Bostavan Classic Cabernet
    +countryCn string 国家中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:摩尔多瓦
    +countryEn string 国家英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Moldova
    +regionCn string 产区中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:波尔多
    +regionEn string 产区英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Bordeaux
    +subRegionCn string 子产区中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:梅多克
    +subRegionEn string 子产区英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Medoc
    +wineryCn string 酒庄中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:波斯塔瓦酒庄
    +wineryEn string 酒庄英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Vinaria Bostavan
    +classifyByColor string 酒类型,hasdetail = 0时,表示无法识别,该字段不返回,示例:红葡萄酒
    +classifyBySugar string 糖分类型,hasdetail = 0时,表示无法识别,该字段不返回,示例:半甜型
    +color string 色泽,hasdetail = 0时,表示无法识别,该字段不返回,示例:宝石红色
    +grapeCn string 葡萄品种,可能有多种葡萄,hasdetail = 0时,表示无法识别,该字段不返回,示例:品丽珠;赤霞珠
    +grapeEn string 葡萄品种英文名,可能有多种葡萄,hasdetail = 0时,表示无法识别,该字段不返回,示例:Cabernet Franc;Cabernet Sauvignon
    +tasteTemperature string 品尝温度,hasdetail = 0时,表示无法识别,该字段不返回,示例:6-11℃
    +description string 酒品描述,hasdetail = 0时,表示无法识别,该字段不返回,示例:葡萄酒呈深宝石红色,具有香料、香草和新鲜水果的果香,酒体分明,口感畅顺,果香横溢,单宁软化程度高,让你回味无穷

    返回示例

    仅识别出红酒名称,hasdetail = 0:

    {
    	"log_id": 3450013152046070669, 
    	"result": 
    	{
    		"wineNameCn": "银色高地阙歌干红",
    		"hasdetail":0
    	}
    }

    识别出详细信息,hasdetail = 1:

    {
    	"log_id": 2495538539661269738,
    	"result": {
    		"classifyByColor": "红葡萄酒/Red Wine",
    		"subRegionCn": "梅多克",
    		"wineNameCn": "拉图嘉利庄园红葡萄酒(正牌)",
    		"subRegionEn": "Medoc",
    		"regionEn": "Bordeaux",
    		"color": "深紫红色/Dark Violet",
    		"wineNameEn": "Chateau La Tour Carnet",
    		"hasdetail": 1,
    		"wineryCn": "拉图嘉利庄园",
    		"classifyBySugar": "干型/Dry",
    		"tasteTemperature": "16-18℃",
    		"regionCn": "波尔多",
    		"wineryEn": "Chateau La Tour-Carnet",
    		"grapeCn": "",
    		"grapeEn": "",
    		"countryCn": "法国",
    		"countryEn": "France",
    		"description": "此酒充满红果和黑果味道,并带有矿物质和花香(紫罗兰,玫瑰),混合些许香草气息,单宁柔软,余香悠长。在口中留下清新的味道,香料和香草味道萦绕口中。"
    	}
    }
    上一篇
    菜品识别
    下一篇
    货币识别