# -*- coding: utf-8 -*- """ 图像识别 """ import re import sys import math import time from .base import AipBase from .base import base64 from .base import json from .base import urlencode from .base import quote class AipImageClassify(AipBase): """ 图像识别&车辆分析 """ # 组合接口API __combinationUrl = "https://aip.baidubce.com/api/v1/solution/direct/imagerecognition/combination" # 通用物体和场景识别 __advancedGeneralUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general' # 图像单主体检测 __objectDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/object_detect' # 动物识别 __animalDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/animal' # 植物识别 __plantDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/plant' # logo识别 __logoSearchUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/logo' # logo识别—入库 __logoAddUrl = 'https://aip.baidubce.com/rest/2.0/realtime_search/v1/logo/add' # logo识别—删除 __logoDeleteUrl = 'https://aip.baidubce.com/rest/2.0/realtime_search/v1/logo/delete' # 果蔬识别 __ingredientUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/classify/ingredient' # 自定义菜品-入库 __customDishAddUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/dish/add" # 自定义菜品-检索 __customDishSearchUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/dish/search" # 自定义菜品-删除 __customDishDeleteUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/dish/delete" # 菜品识别 __dishDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/dish' # 红酒识别 __redwineUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine' # 货币识别 __currencyUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/currency' # 地标识别 __landmarkUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/landmark' # 图像多主体检测 __multiObjectDetectUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/multi_object_detect" # 自定义红酒-入库 __customRedwineAddUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/redwine/add" # 自定义红酒-检索 __customRedwineSearchUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/redwine/search" # 自定义红酒-删除 __customRedwineDeleteUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/redwine/delete" # 自定义红酒-更新 __customRedwineUpdateUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/redwine/update" # 花卉识别-已下线 __flowerUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/flower' # 车型识别 __carDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/car' # 车辆检测 __vehicleDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle_detect' # 车辆外观损伤识别 __vehicleDamageUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle_damage' # 车流统计 __traffic_flowUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/traffic_flow" # 车辆属性识别 __vehicle_attrUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle_attr" # 车辆检测-高空版 __vehicle_detect_highUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle_detect_high" # 车辆分割 __vehicle_seg_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle_seg"; __carClassifyV1Url = 'https://aip.baidubce.com/rest/2.0/vis-classify/v1/car' __vehicleAttrClassifyV2Url = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/vehicle_attr' def combinationByImage(self, image, scenes, options=None): """ 组合接口 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data['scenes'] = scenes data.update(options) return self._request(self.__combinationUrl, json.dumps(data, ensure_ascii=False), {'Content-Type': 'application/json;charset=utf-8'}) def combinationByImageUrl(self, imageUrl, scenes, options=None): """ 组合接口_url图片方式 """ options = options or {} data = {} data['imgUrl'] = imageUrl data['scenes'] = scenes data.update(options) return self._request(self.__combinationUrl, json.dumps(data, ensure_ascii=False), {'Content-Type': 'application/json;charset=utf-8'}) def advancedGeneral(self, image, options=None): """ 通用物体和场景识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__advancedGeneralUrl, data) def advancedGeneralUrl(self, url, options=None): """ 通用物体和场景识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__advancedGeneralUrl, data) def objectDetect(self, image, options=None): """ 图像单主体检测 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__objectDetectUrl, data) def animalDetect(self, image, options=None): """ 动物识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__animalDetectUrl, data) def animalDetectUrl(self, url, options=None): """ 动物识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__animalDetectUrl, data) def plantDetect(self, image, options=None): """ 植物识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__plantDetectUrl, data) def plantDetectUrl(self, url, options=None): """ 植物识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__plantDetectUrl, data) def logoSearch(self, image, options=None): """ logo识别-检索 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__logoSearchUrl, data) def logoSearchUrl(self, url, options=None): """ logo识别-检索_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__logoSearchUrl, data) def logoAdd(self, image, brief, options=None): """ logo识别—入库 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data['brief'] = brief data.update(options) return self._request(self.__logoAddUrl, data) def logoAddUrl(self, url, brief, options=None): """ logo识别—入库_url图片方式 """ options = options or {} data = {} data['url'] = url data['brief'] = brief data.update(options) return self._request(self.__logoAddUrl, data) def logoDeleteByImage(self, image, options=None): """ logo识别—删除_image图片方式 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__logoDeleteUrl, data) def logoDeleteBySign(self, cont_sign, options=None): """ logo识别—删除_cont_sign签名方式 """ options = options or {} data = {} data['cont_sign'] = cont_sign data.update(options) return self._request(self.__logoDeleteUrl, data) def ingredient(self, image, options=None): """ 果蔬识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__ingredientUrl, data) def ingredientUrl(self, url, options=None): """ 果蔬识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__ingredientUrl, data) def customDishesAddImage(self, image, brief, options=None): """ 自定义菜品识别—入库 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data['brief'] = brief data.update(options) return self._request(self.__customDishAddUrl, data) def customDishesAddUrl(self, url, brief, options=None): """ 自定义菜品识别—入库_url图片方式 """ options = options or {} data = {} data['url'] = url data['brief'] = brief data.update(options) return self._request(self.__customDishAddUrl, data) def customDishesSearch(self, image, options=None): """ 自定义菜品识别—检索 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__customDishSearchUrl, data) def customDishesSearchUrl(self, url, options=None): """ 自定义菜品识别—检索_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__customDishSearchUrl, data) def customDishesDeleteImage(self, image, options=None): """ 自定义菜品识别—删除_image图片方式 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__customDishDeleteUrl, data) def customDishesDeleteUrl(self, url, options=None): """ 自定义菜品识别—删除_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__customDishDeleteUrl, data) def customDishesDeleteContSign(self, cont_sign, options=None): """ 自定义菜品识别—删除_cont_sign签名方式 """ options = options or {} data = {} data['cont_sign'] = cont_sign data.update(options) return self._request(self.__customDishDeleteUrl, data) def dishDetect(self, image, options=None): """ 菜品识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__dishDetectUrl, data) def dishDetectUrl(self, url, options=None): """ 菜品识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__dishDetectUrl, data) def redwine(self, image, options=None): """ 红酒识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__redwineUrl, data) def redwineUrl(self, url, options=None): """ 红酒识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__redwineUrl, data) def currency(self, image, options=None): """ 货币识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__currencyUrl, data) def currencyUrl(self, url, options=None): """ 货币识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__currencyUrl, data) def landmark(self, image, options=None): """ 地标识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__landmarkUrl, data) def landmarkUrl(self, url, options=None): """ 地标识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__landmarkUrl, data) def multiObjectDetect(self, image, options=None): """ 图像多主体检测 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__multiObjectDetectUrl, data) def multiObjectDetectUrl(self, url, options=None): """ 图像多主体检测_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__multiObjectDetectUrl, data) def customRedwineAddImage(self, image, brief, options=None): """ 自定义红酒—入库 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data['brief'] = brief data.update(options) return self._request(self.__customRedwineAddUrl, data) def customRedwineAddUrl(self, url, brief, options=None): """ 自定义红酒—入库_url图片方式 """ options = options or {} data = {} data['url'] = url data['brief'] = brief data.update(options) return self._request(self.__customRedwineAddUrl, data) def customRedwineSearch(self, image, options=None): """ 自定义红酒—检索 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__customRedwineSearchUrl, data) def customRedwineSearchUrl(self, url, options=None): """ 自定义红酒—检索_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__customRedwineSearchUrl, data) def customRedwineDeleteImage(self, image, options=None): """ 自定义红酒—删除_image图片方式 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__customRedwineDeleteUrl, data) def customRedwineDeleteContSign(self, cont_sign_list, options=None): """ 自定义红酒—删除_cont_sign签名方式 """ options = options or {} data = {} data['cont_sign_list'] = cont_sign_list data.update(options) return self._request(self.__customRedwineDeleteUrl, data) def customRedwineUpdate(self, image, options=None): """ 自定义红酒—更新 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__customRedwineUpdateUrl, data) def customRedwineUpdateUrl(self, url, options=None): """ 自定义红酒—更新_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__customRedwineUpdateUrl, data) def flower(self, image, options=None): """ 花卉识别-已下线 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__flowerUrl, data) def carDetect(self, image, options=None): """ 车型识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__carDetectUrl, data) def carDetectUrl(self, url, options=None): """ 车型识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__carDetectUrl, data) def vehicleDetect(self, image, options=None): """ 车辆检测 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__vehicleDetectUrl, data) def vehicleDetectUrl(self, url, options=None): """ 车辆检测_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__vehicleDetectUrl, data) def vehicleDamage(self, image, options=None): """ 车辆外观损伤识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__vehicleDamageUrl, data) def vehicleDamageUrl(self, url, options=None): """ 车辆外观损伤识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__vehicleDamageUrl, data) def trafficFlow(self, image, case_id, case_init, area, options=None): """ 车流统计 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data['case_id'] = case_id data['case_init'] = case_init data['area'] = area data.update(options) return self._request(self.__traffic_flowUrl, data) def trafficFlowUrl(self, url, case_id, case_init, area, options=None): """ 车流统计_url图片方式 """ options = options or {} data = {} data['url'] = url data['case_id'] = case_id data['case_init'] = case_init data['area'] = area data.update(options) return self._request(self.__traffic_flowUrl, data) def vehicleAttr(self, image, options=None): """ 车辆属性识别 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__vehicle_attrUrl, data) def vehicleAttrUrl(self, url, options=None): """ 车辆属性识别_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__vehicle_attrUrl, data) def vehicleDetectHigh(self, image, options=None): """ 车辆检测-高空版 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__vehicle_detect_highUrl, data) def vehicleDetectHighUrl(self, url, options=None): """ 车辆检测-高空版_url图片方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__vehicle_detect_highUrl, data) def vehicleSeg(self, image, options=None): """ 车辆分割 """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__vehicle_seg_url, data) def vehicleSegUrl(self, url, options=None): """ 车辆分割: url方式 """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__vehicle_seg_url, data) def vehicleAttrClassifyV2Image(self, image, options=None): """ 车辆属性识别 接口使用说明: https://ai.baidu.com/ai-doc/VEHICLE/mk3hb3fde """ options = options or {} data = {} data['image'] = base64.b64encode(image).decode() data.update(options) return self._request(self.__vehicleAttrClassifyV2Url, data) def vehicleAttrClassifyV2Url(self, url, options=None): """ 车辆属性识别 接口使用说明: https://ai.baidu.com/ai-doc/VEHICLE/mk3hb3fde """ options = options or {} data = {} data['url'] = url data.update(options) return self._request(self.__vehicleAttrClassifyV2Url, data)