def baidu_img_realize(filepath):
	APP_ID = APP_ID  
	API_KEY = API_KEY 
	SECRET_KEY = SECRET_KEY
	aipimg = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
	options = {}
	image = get_file_content(filepath)
	aipimg.advancedGeneral(image)
	result = aipimg.advancedGeneral(image, options)
	return result
Exemple #2
0
def image_labels(filePath):
    APP_ID = '16562491'
    API_KEY = 'RjFLMA41ELxZG0A07A3UgxDV'
    SECRET_KEY = '4Kk6jdzfNliYwEVFCOrjwtUee7Ylu6QP'
    filePath = "/home/lwf/scan_recognition/" + filePath
    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
    image = get_file_content(filePath)
    client.advancedGeneral(image)
    options = {}
    options["baike_num"] = 5
    ret = client.advancedGeneral(image, options)
    return ret['result'][0]['root'] + ret['result'][0]['keyword']
Exemple #3
0
class ImageClassify:
    def __init__(self,app_id,api_key,secret_key):
        self.image_client = AipImageClassify(app_id,api_key,secret_key)
        self.words_client = AipOcr(app_id,api_key,secret_key)

    def _get_token(self):
        url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+self.api_key+'&client_secret='+self.secret_key
        response = requests.get(url)

        if response and response.status_code == 200:
            content = response.json()
            token = content.get('access_token') or ''
            return token
        return None

    def _get_file_content(self,file_path):
        with open(file_path, 'rb') as fp:
            return fp.read()

    def resolve_image(self,file_path):
        image = self._get_file_content(file_path)
        contents = self.image_client.advancedGeneral(image)
        result = contents.get('result')[0]
        return result.get('keyword')

    def resolve_words(self,file_path):
        words = self._get_file_content(file_path)
        contents = self.words_client.basicGeneral(words)
        result = contents.get('words_result')[0]
        return result.get('words')
Exemple #4
0
class ClassifyApi:
    def __init__(self):
        APP_ID = "11455535"
        API_KEY = "oGUA2c9R2CjWFnrKTCSHLbTY"
        SECRET_KEY = "qy6QqdUsfNs5cmRys9RX2cECo0H2vjX3"
        self.client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

    # 识别图片有可能叫什么
    def classify(self, url):
        try:
            image = open(url, 'rb').read()
            msg = self.client.advancedGeneral(image)
            rets = []
            result = msg.get("result")
            if result != None:  # 会存在 api调用次数上线,不返回数据了
                for i in result:
                    temp = {
                        "root": i.get("root").encode("utf-8"),
                        "keyword": i.get("keyword").encode("utf-8"),
                        "score": float(i.get("score"))
                    }
                    rets.append(temp)
                return rets
            else:
                return None
        except Exception, e:
            print e
            raise RuntimeError("百度api调用异常")
Exemple #5
0
    def query_api(self, filePath, options=None):
        image = self.get_file_content(filePath)
        client = AipImageClassify(self.id, self.key, self.secret)
        res = client.advancedGeneral(image)['result']
        res = sorted(res, key=lambda x: x['score'], reverse=True)
        if len(res) >= 3:
            res = res[:3]
            for r in res:
                r['score'] = float('%.2f' % (r['score'] * 100))
        print(res)
        return res


# path="D:/GitHub/animaltest/animaltest/static/uploads/188.jpg"
# animalAPI=animalAPI(APP_ID,API_KEY,SECRET_KEY)
# animalAPI.query_api(path)

# image = get_file_content('D:/GitHub/animaltest/animaltest/static/uploads/188.jpg')

# """ 调用通用物体识别 """
# client.advancedGeneral(image)

# """ 如果有可选参数 """
# options = {}
# options["baike_num"] = 3

# """ 带参数调用通用物体识别 """
# print(client.advancedGeneral(image))
Exemple #6
0
def baidu_image(image_path):
    # content = ''
    options = dict()
    options['baike_num'] = 1
    client = AipImageClassify(BAIDU['IMAGE']['WECHAT']['APP_ID'],
                              BAIDU['IMAGE']['WECHAT']['API_KEY'],
                              BAIDU['IMAGE']['WECHAT']['SECRET_KEY'])

    def get_file_content(file_path):
        with open(file_path, 'rb') as fb:
            return fb.read()

    image = get_file_content(image_path)
    response = client.advancedGeneral(image, options)
    # print(response)
    if 'error_code' not in response:
        if response['result'][0]['baike_info'] and response['result'][0][
                'root'] != '非自然图像-屏幕截图':
            keyword = response['result'][0]['keyword']
            description = response['result'][0]['baike_info']['description']
            image_url = response['result'][0]['baike_info']['image_url']
            reply_image_path = ".\\grp_img\\reply_%s.jpg" % image_path.split(
                '\\')[2][:-4]
            with open(reply_image_path, 'wb') as f:
                f.write(requests.get(image_url).content)
            content = '%s\n%s' % (keyword, description)
            return content, reply_image_path
        else:
            return None
Exemple #7
0
def recv_picture(conn, addr):
    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
    with open('pic.jpeg', 'wb') as fp:
        first=conn.recv(BUFF_SIZE)
        file_size, first = first.split(bytes('<SEPARATOR>', 'utf-8'))
        file_size = int(file_size)
        print(file_size)
        fp.write(first)
        file_size -= len(first)
        while file_size > 0:
            data = conn.recv(BUFF_SIZE)
            if not data:
                break
            fp.write(data)
            file_size -= len(data)
        print('picture received')
        fp.close()
    img = get_file_content("pic.jpeg")
    res = client.advancedGeneral(img)
    name = res['result'][0]['keyword']
    kind = get_kind(name)
    kind_list = ['可回收垃圾', '有害垃圾', '厨余垃圾', '其他垃圾', '无法识别']
    kind_name = kind_list[int(kind)]
    print('类型:%s' % (kind_name))
    # res=recognize.application()
    conn.send(bytes(str(kind)+'\r', 'utf-8'))
    conn.close()
Exemple #8
0
def tag_recognition(url, APP_ID, API_KEY, SECRET_KEY):
    APP_ID = APP_ID
    API_KEY = API_KEY
    SECRET_KEY = SECRET_KEY
    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
    img_response = requests.get(url)
    response = client.advancedGeneral(img_response.content)
    return response
Exemple #9
0
 def sss(img_url):
     APP_ID = '17926029'
     API_KEY = 'dvzmdFFaMFidNass4pZcYals'
     SECRET_KEY = 'GTRmEpFHT1zXVNEhWX3rzzfLgXFkLREf'
     client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
     print(img_url)
     def get_file_content(img):
         with open(img, 'rb') as fp:
             return fp.read()
     image = get_file_content(img_url)
     #	调用通用物体识别
     client.advancedGeneral(image)
     #	如果有可选参数
     options = {}
     options["baike_num"] = 5
     #	带参数调用通用物体识别
     result = client.advancedGeneral(image, options)
     return result
Exemple #10
0
class ImageAi(object):
    def __init__(self, conf_path):
        config = configparser.ConfigParser()
        config.read(conf_path)
        self.__app_id = config["image"]["app_id"]
        self.__api_key = config["image"]["api_key"]
        self.__secret_key = config["image"]["secret_key"]
        self.__client = AipImageClassify(self.__app_id, self.__api_key, self.__secret_key)

    def deal(self, image):
        return self.__client.advancedGeneral(image)
Exemple #11
0
 def query_api(self,filePath,options=None):
     image=self.get_file_content(filePath)
     client = AipImageClassify(self.id, self.key, self.secret)
     res=client.advancedGeneral(image)['result']
     res=sorted(res,key=lambda x:x['score'],reverse=True)
     if len(res)>=3:
         res=res[:3]
         for r in res:
             r['score']=float('%.2f' % (r['score']*100))
     print(res)
     return res
Exemple #12
0
def ir_api(image):
    """ 你的 APPID AK SK """
    APP_ID = '15719765'
    API_KEY = 'W3gO6OKVcKtGSGtIjN2rTZgW'
    SECRET_KEY = '2T1cZrytwBGLLrjFosQjNvSczgIufLg2'

    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
    """ 调用通用物体识别 """
    client.advancedGeneral(image)
    """ 如果有可选参数 """
    options = {}
    options["baike_num"] = 5
    """ 带参数调用通用物体识别 """
    result = client.advancedGeneral(image, options)['result']
    obj_type = result[0]['root']
    obj_confidence = result[0]['score']

    print("object type: ", obj_type)
    print("object confidence: ", obj_confidence)
    return obj_type, obj_confidence
Exemple #13
0
def main(arg):
    """ 你的 APPID AK SK """
    APP_ID = '23521368'
    API_KEY = 'ZsU4yX9sebQmW06s7xc3oaaG'
    SECRET_KEY = '94OsjVY5GwbaD8QZRLqzRGQgWhwdWcTq'

    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()

    image = get_file_content(arg[0])
    """ 调用通用物体识别 """

    res = client.advancedGeneral(image)
    sim_res = "\nGeneral:\n"
    poem_keys = ""
    for i in range(len(res["result"])):
        sim_res += res["result"][i]["keyword"] + ' '
        if len(res["result"][i]["keyword"]) > 4:
            res["result"][i]["keyword"] = res["result"][i]["keyword"][:4]
        if i < 3:
            poem_keys += res["result"][i]["keyword"] + ' '
        if i == 3:
            poem_keys += res["result"][i]["keyword"]

    res = client.animalDetect(image)
    sim_res += "\nAnimal:\n"
    for i in range(len(res["result"])):
        sim_res += res["result"][i]["name"] + ' '

    res = client.plantDetect(image)
    sim_res += "\nPlant:\n"
    for i in range(len(res["result"])):
        sim_res += res["result"][i]["name"] + ' '

    res = client.dishDetect(image)
    sim_res += "\nDish:\n"
    for i in range(len(res["result"])):
        sim_res += res["result"][i]["name"] + ' '

    sim_res += "\nPoem:\n"
    conn = s.connect(("59.78.8.125", 50010))

    s.send(('{"keys":"' + poem_keys + '","yun":"' + str(random.randint(0, 5)) +
            '","pattern_id":"' + str(random.randint(0, 3)) +
            '"}').encode('utf-8'))
    poem = s.recv(1024).decode('utf-8')
    sim_res += poem

    print(sim_res)
Exemple #14
0
class BaiduImageClassify(object):
    def __init__(self):
        self.__AppID = self.__get_AppID()  # 百度AppID
        self.__APIKey = self.__get_APIKey()  # 百度APIKey
        self.__SecretKey = self.__get_SecretKey()  # 百度SecretKey
        self.__client = AipImageClassify(self.__AppID, self.__APIKey,
                                         self.__SecretKey)

    def __get_AppID(self):  # 百度AppID
        return '15564545'

    def __get_APIKey(self):  # 百度APIKey
        return 'eTQu0rFLAo18fQC6WN1kgNaG'

    def __get_SecretKey(self):  # 百度SecretKey
        return 'fjtIgD7auNmWwEOqmOL9grdHCQSZmb7m'

    def ImageClassify(self, filePath):
        try:
            """ 读取图片 """
            bucket = Bucket('wechat')
            image = bucket.get_object_contents(filePath)
            """ 调用通用物体识别 """
            self.__client.advancedGeneral(image)
            """ 如果有可选参数 """
            options = {}
            options["baike_num"] = 0
            """ 带参数调用通用物体识别 """
            info = self.__client.advancedGeneral(image, options)
            #print info
            if 'error_code' in info:  # 识别失败
                raise Exception("error_code: %s, error_msg: %s" %
                                (info['error_code'], info['error_msg']))
            print "image:%s" % (filePath)
            for item in info['result']:
                print 'root:%s,keyword:%s' % (item['root'], item['keyword'])
        except Exception, ex:
            print 'BaiduImageClassify.ImageClassify error:%s' % (ex)
Exemple #15
0
def main(arg):
    """ 你的 APPID AK SK """
    APP_ID = '23521368'
    API_KEY = 'ZsU4yX9sebQmW06s7xc3oaaG'
    SECRET_KEY = '94OsjVY5GwbaD8QZRLqzRGQgWhwdWcTq'

    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()

    image = get_file_content(arg[0])
    """ 调用通用物体识别 """
    print(client.advancedGeneral(image))
def content_find_file():
    img_list = globalvar.get_value('img_list_global')
    show_img = img_list[len(img_list) - 1]

    global APP_ID, API_KEY, SECRET_KEY
    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

    # print(type(show_img)) #PIL Image
    # 1 保存  2 读文件流
    show_img.save('baidu_ai_temp.jpg')
    baidu_ai_temp = open('baidu_ai_temp.jpg', 'rb').read()
    r = client.advancedGeneral(baidu_ai_temp)  # jpg png图片的二进制

    # print(r)
    t = r['result'][0]['keyword']
    # print(t)
    messagebox.showinfo(title='信息', message=('这可能是' + t + '!'))  # return ok
Exemple #17
0
class Image(object):
    def __init__(self, filename, regs):
        app_id, app_key, secret_key = regs
        #        self.app_id, self.app_key, self.secret_key = app_id, app_key, secret_key
        self.filename = filename
        self.image = get_img_content(filename)
        self.base64 = img2base64(self.image)
        self.client = AipImageClassify(app_id, app_key, secret_key)

    def is_same_as(self, image):
        return self.base64 == image.base64

    '''
    def _find_logo(self):
        res = None
        token = access_token(url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + self.app_key + '&client_secret=' + self.secret_key,
            key='access_token')
        params = {"custom_lib":True, "image":self.base64}
        url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/logo?access_token=" + token
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        data = json.loads(post_json(url, data=params, headers=headers))
        print(data)
        if data is not None:
            res = data.get('result')
        return res
    '''

    #    def _result(self, result_num, result):
    #        for i in range(result_num):
    #            r = result[i]

    def find(self, options=None):
        if options is None:
            options = {}
        return self.client.advancedGeneral(self.image, options)

    def find_logo(self, options=None):
        if options is None:
            options = {}
        r = self.client.logoSearch(self.image, options)
        result_num = r.get('result_num')
        result = r.get('result')
        return result_num, result
Exemple #18
0
def main(arg):
    """ 你的 APPID AK SK """
    APP_ID = '23521368'
    API_KEY = 'ZsU4yX9sebQmW06s7xc3oaaG'
    SECRET_KEY = '94OsjVY5GwbaD8QZRLqzRGQgWhwdWcTq'

    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)


    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()

    image = get_file_content(arg[0])

    """ 调用通用物体识别 """

    res = client.advancedGeneral(image)
    sim_res = "\nGeneral:\n"
    for i in range(len(res["result"])):
        sim_res += res["result"][i]["keyword"] + '; '

    res = client.animalDetect(image)
    sim_res += "\nAnimal:\n"
    for i in range(len(res["result"])):
        sim_res += res["result"][i]["name"] + '; '

    res = client.plantDetect(image)
    sim_res += "\nPlant:\n"
    for i in range(len(res["result"])):
        sim_res += res["result"][i]["name"] + '; '

    res = client.dishDetect(image)
    sim_res += "\nDish:\n"
    for i in range(len(res["result"])):
        sim_res += res["result"][i]["name"] + '; '

    print(sim_res)
Exemple #19
0
def imgdetect(request, img):
    from aip import AipImageClassify
    """ 这里输入你创建应用获得的三个参数"""
    APP_ID = '15279946'
    API_KEY = 'gFT6Iim8OPT51HQFIyGOmIra'
    SECRET_KEY = 'Afi8SoHMFWSKYzi1QD78giGMyakVtr3k'
    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

    imgpath = os.path.join(settings.MEDIA_ROOT, "images", img)
    imgurl = "/media/images/" + img
    with open(imgpath, "rb") as fp:
        img = fp.read()
    options = {}
    options["baike_num"] = 5
    resultimg = client.advancedGeneral(img, options)
    img_num = resultimg["result_num"]
    sclist = []
    snamelist = []
    baikeurllist = []
    baikedeslist = []
    for num in range(img_num):
        sc = str(round(resultimg["result"][num]["score"] * 100, 2)) + "%"
        sname = resultimg["result"][num]["keyword"]
        if resultimg["result"][num]["baike_info"]:
            baikeurl = resultimg["result"][num]["baike_info"]["baike_url"]
            baikedes = resultimg["result"][num]["baike_info"]["description"]
        else:
            baikeurl = "#"
            baikedes = ""
        snamelist.append(sname)
        sclist.append(sc)
        baikeurllist.append(baikeurl)
        baikedeslist.append(baikedes)

    imginfo = zip(snamelist, sclist, baikeurllist, baikedeslist)

    return render(request, "imginfo.html", locals())
Exemple #20
0
class BaiduApi(Base):
    def __init__(self):
        super().__init__()
        self.APP_ID = secure.DU_CV_API_ID
        self.API_KEY = secure.DU_CV_API_KEY
        self.SECRET_KEY = secure.DU_CV_SECRET_KEY
        # this is the source object to be wrapped
        self.baidu_client = AipImageClassify(self.APP_ID, self.API_KEY,
                                             self.SECRET_KEY)

    def classify(self):
        self.img = self._img_encode(self.img)
        return self.baidu_client.advancedGeneral(self.img)

    def _img_encode(self,
                    img_content: str,
                    coding=config.IMG_ENCODING_PATTERN):
        """
        百度的sdk包含了对图片进行处理的相关代码,此处图片编码不做实现
        :param img_content:
        :param coding:
        :return:
        """
        return self.img
#coding:utf-8

from aip import AipImageClassify
""" 这里输入你创建应用获得的三个参数"""
APP_ID = '11638563'
API_KEY = 'XsQl0XGRGWeYIN7k52AMGVU4'
SECRET_KEY = 'z53nby7BINknecpiOSCkenPTFtYZUHsx'

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """


def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()


""" 图片为存储在本地的图片,格式不限 """
image = get_file_content('180806-202532.png')
""" 调用通用物体识别 """
print(client.advancedGeneral(image))
from aip import AipImageClassify
import os

""" 填入参数"""
APP_ID = '**'
API_KEY = '**'
SECRET_KEY = '**'

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

""" 读取图片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

dish_path = os.getcwd()
dish_path = dish_path + '/object'
folderlist = os.listdir(dish_path)
for folder in folderlist:
    filePath=dish_path + '/'+folder
    image = get_file_content(filePath)

    """ 调用通用物体识别 """
    results = client.advancedGeneral(image)
    result = results['result'][0]
    print(result['keyword'], '\t置信度:', result['score'])
Exemple #23
0
APP_ID = '20103218'
API_KEY = 'sGsoiPGUCC2nyCcrlGN1pneF'
SECRET_KEY = 'ttXvP6pCGcMRVHewFEf1j0HxMi60XV9g'

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """


def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()


image = get_file_content('E:\pycharm\ex2\static\img\img1.jpg')
""" 调用通用物体识别 """
client.advancedGeneral(image)
""" 如果有可选参数 """
options = {}
options["baike_num"] = 5
""" 带参数调用通用物体识别 """
result = client.advancedGeneral(image, options)
print(result)
"""读取对联字典"""
f = open(r"dic.txt", "r")
str = f.read()
temp = str.split(" ")
dic = []
for i in temp:
    if i == "":
        pass
    else:
Exemple #24
0
from aip import AipImageClassify
""" 你的 APPID AK SK """
APP_ID = '23942564'
API_KEY = '7uL42GlUO4mMYnVGxUp8GU8i'
SECRET_KEY = '5CxKfUO9412hbTueg9NMwajx82M3op52'

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """


def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()


image = get_file_content('4.jpg')
""" 调用通用物体识别 """
result = client.advancedGeneral(image)
# print(result)

result = client.advancedGeneral(image)['result']
for i in result:
    print(i['keyword'], i['root'])
Exemple #25
0
APP_ID = '16794181'
API_KEY = 'ZfRjnGxm8Uqdfqs3YzL9XGy8'
SECRET_KEY = '1FQUf9D6qRYcd54ZEE0xKAVXYClKoXOb'

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)


def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()


if __name__ == "__main__":
    filePath = input('输入图片的路径:')
    image = get_file_content(filePath)
    data = client.advancedGeneral(image)
    if data:
        print(data)
        result1 = data.get('result')[0]
        kind = result1.get('root')
        msg = result1.get('keyword')
        print(kind, msg)

        if '汽车' in kind:
            data = client.carDetect(image)
            if data:
                print(data)
                print('*' * 50)
                car1 = data.get('result')[0]
                carname = car1.get('name')
                color = data.get('color_result')
Exemple #26
0
def BaiDu_image_recognize(file_path, recognize_type):
    """
    图像识别
    :param file_path: 文件路径
    :param recognize_type: 识别类型,共12种:
                1. 通用图像识别
                2. 菜品识别
                3. 车辆识别
                4. logo商标识别
                5. 动物识别
                6. 植物识别
                7. 图像主体检测
                8. 地标识别
                9. 食材识别
                10. 红酒识别
                11. 货币识别
    :return:
    """
    # TODO 隐私信息
    """ 你的 APP_ID API_KEY SECRET_KEY """
    app_id = '23899102'  # '你的 App ID'
    api_key = 'GKHIEq6gVOfp2AeRxfUopSDM'  # '你的 Api Key'
    secret_key = 'dLrlMlGemQ1oan2OS8GogLDD0dt1HuVI'  # '你的 Secret Key'

    # 获取百度云操作类对象
    client = AipImageClassify(app_id, api_key, secret_key)
    image = get_file_content(file_path)

    # """ 调用通用物体识别 """
    # result = client.dishDetect(image)
    # print(result)
    """ 如果有可选参数 """
    options = {"baike_num": 5}
    """ 带参数调用通用物体识别 """
    if recognize_type == 1:  # 通用图像识别
        response = client.advancedGeneral(image, options)
    elif recognize_type == 2:  # 菜品识别
        response = client.dishDetect(image, options)
    elif recognize_type == 3:  # 车辆识别
        response = client.carDetect(image, options)
    elif recognize_type == 4:  # logo商标识别
        response = client.logoSearch(image)
    elif recognize_type == 5:  # 动物识别
        response = client.animalDetect(image, options)
    elif recognize_type == 6:  # 植物识别
        response = client.plantDetect(image, options)
    elif recognize_type == 7:  # 图像主体检测
        response = client.objectDetect(image)
    elif recognize_type == 8:  # 地标识别
        response = client.landmark(image)
    # 花卉识别已经移除
    # elif recognize_type == 9:   # 花卉识别
    #     response = client.flower(image)
    elif recognize_type == 9:  # 食材识别
        response = client.ingredient(image, options)
    elif recognize_type == 10:  # 红酒识别
        response = client.redwine(image)
    elif recognize_type == 11:  # 货币识别
        response = client.currency(image)
    else:
        response = None
    response = response['result'][0]
    return response
Exemple #27
0
from aip import AipImageClassify

APP_ID = '22790464'
API_KEY = '6CeW2kefahGVAl75VHiP2Ig5'
SECRET_KEY = 'xzvLAz6M4M7ZD3AY9flnEZMuHqLFoIe5 '

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

""" 读取图片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

image = get_file_content('C:/Users/Rain/Pictures/01.jpg')

""" 调用通用物体识别 """
client.advancedGeneral(image);

""" 如果有可选参数 """
options = {}
options["baike_num"] = 5

""" 带参数调用通用物体识别 """
resp = client.advancedGeneral(image, options)
print(resp)
Exemple #28
0
class ImgTagExtractor:
    def __init__(self, em):
        self.em = em
        self.currentindex = 0
        self._client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
        self._imgClient = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

    def extractone(self, params):
        # self.em.rclog("extractone %s" % params["filename:"])
        ok = False
        if "filename:" not in params:
            self.em.rclog("extractone: no file name")
            return (ok, docdata, "", rclexecm.RclExecM.eofnow)
        filename = params["filename:"]
        # print("filename ", filename)

        try:
            metadata = pyexiv2.ImageMetadata(filename)
            metadata.read()
            keys = metadata.exif_keys + metadata.iptc_keys + metadata.xmp_keys
            # print("metadata:",keys)
            mdic = {}
            for k in keys:
                # we skip numeric keys and undecoded makernote data
                if k != 'Exif.Photo.MakerNote' and not khexre.match(k):
                    mdic[k] = str(metadata[k].raw_value)
        except Exception as err:
            self.em.rclog("extractone: extract failed: [%s]" % err)
            return (ok, "", "", rclexecm.RclExecM.eofnow)

        docdata = b'<html><head>\n'

        # print("mdic:", mdic)
        ttdata = set()
        for k in pyexiv2_titles:
            if k in mdic:
                ttdata.add(self.em.htmlescape(mdic[k]))
        if ttdata:
            title = ""
            for v in ttdata:
                v = v.replace('[', '').replace(']', '').replace("'", "")
                title += v + " "
            docdata += rclexecm.makebytes("<title>" + title + "</title>\n")

        for k in exiv2_dates:
            if k in mdic:
                # Recoll wants: %Y-%m-%d %H:%M:%S.
                # We get 2014:06:27 14:58:47
                dt = mdic[k].replace(":", "-", 2)
                docdata += b'<meta name="date" content="' + \
                           rclexecm.makebytes(dt) + b'">\n'
                break

        for k, v in mdic.items():
            if k == 'Xmp.digiKam.TagsList':
                docdata += b'<meta name="keywords" content="' + \
                           rclexecm.makebytes(self.em.htmlescape(mdic[k])) + \
                           b'">\n'

        docdata += b'</head><body><pre>\n'
        ## TODO should we need?
        for k, v in mdic.items():
            if k in meta_pyexiv2_keys:
                docdata += rclexecm.makebytes(k + " : " + \
                                          self.em.htmlescape(mdic[k]) + "<br />\n")

        img_result = self._imgClient.advancedGeneral(
            get_file_content(filename))
        ocr_result = self._client.basicGeneral(get_file_content(filename))
        for item in ocr_result['words_result']:
            docdata += rclexecm.makebytes(
                self.em.htmlescape(item["words"]) + "<br />\n")
        for item in img_result['result']:
            docdata += rclexecm.makebytes(
                self.em.htmlescape(item["keyword"]) + "<br />\n")
        docdata += b'</pre></body></html>'

        self.em.setmimetype("text/html")

        return (True, docdata, "", rclexecm.RclExecM.eofnext)

    ###### File type handler api, used by rclexecm ---------->
    def openfile(self, params):
        self.currentindex = 0
        return True

    def getipath(self, params):
        return self.extractone(params)

    def getnext(self, params):
        if self.currentindex >= 1:
            return (False, "", "", rclexecm.RclExecM.eofnow)
        else:
            ret = self.extractone(params)
            self.currentindex += 1
            return ret
Exemple #29
0
class BaiduDetector(object):
    def __init__(self, image_path):
        self.image_path = image_path
        self.image = get_file_content(image_path)
        self.client = AipImageClassify(baidu_appid, baidu_apikey,
                                       baidu_secretkey)
        self.object_class = ''
        self.object_classkeyword = ''
        self.result_string = ''
        self.cls_string = ''
        self.object_keyword = ''
        self.baike_des = ''
        self.ignore_reply = 0

    def config_result(self, result):
        print('二级识别')
        print(result)
        result_arr = result['result']
        self.object_keyword = '按照' + self.cls_string + '属性进行二级识别:'
        for obj in result_arr:
            probability = 0
            if 'probability' in obj.keys():
                probability = float(obj['probability'])
            elif 'score' in obj.keys():
                probability = float(obj['score'])
            percent = probability * 100.0

            if percent == 0:
                self.object_keyword = self.object_keyword + '\n' + '可能是:' + obj[
                    'name']
            else:
                self.object_keyword = self.object_keyword + '\n' + str(
                    round(percent, 0)) + '%的可能是:' + obj['name']

        # result_best = result_arr[0]
        # self.object_keyword = result_best['name']
        # baike_info = result_best['baike_info']
        # self.baike_des = baike_info['description']

    def label_detect(self, label, general_result):

        result_arr = general_result['result']
        result_best = result_arr[0]

        if '车' in label:
            print('车')
            self.cls_string = '汽车'
            result = self.client.carDetect(self.image)
            self.config_result(result)
        elif '食物' in label:
            print('食物')
            self.cls_string = '食物'
            result = self.client.dishDetect(self.image)
            self.config_result(result)
        elif 'Logo' in label:
            print('Logo')
            self.cls_string = 'Logo'
            result = self.client.logoSearch(self.image)
            self.config_result(result)
        elif '动物' in label:
            print('动物')
            self.cls_string = '动物'
            result = self.client.animalDetect(self.image)
            self.config_result(result)
        elif '植物' in label:
            print('植物')
            self.cls_string = '植物'
            result = self.client.plantDetect(self.image)
            self.config_result(result)
        elif '地标' in label or '建筑' in label:
            print('地标')
            self.cls_string = '地标'
            result = self.client.landmark(self.image)
            print('二级属性')
            print(result)
            self.object_keyword = ''

            result_obj = result['result']
            if (result_obj is list):
                for obj in result_obj:
                    self.object_keyword = self.object_keyword + obj[
                        'landmark'] + '?'
            elif (result_obj is dict):
                self.object_keyword = self.object_keyword + result_obj[
                    'landmark'] + '?'

        elif '人物' in label:
            print('人物')
            self.cls_string = '人物'
            self.object_keyword = result_best['keyword']
        else:
            self.object_keyword = result_best['keyword']

    def womengrade(self):
        f = open("./react_words.json", encoding='utf-8')
        map = json.load(f)
        womengrade = map['womengrade']
        index = random.randint(0, len(womengrade) - 1)
        return womengrade[index]

    def general_detect(self):
        result = self.client.advancedGeneral(self.image)
        print('通用识别')
        print(result)
        result_arr = result['result']
        result_best = result_arr[0]

        # baike_info = result_best['baike_info']
        # self.baike_des = baike_info['description']

        label_str = ''
        result_str = '图像识别大类:'
        self.ignore_reply = 0
        for obj in result_arr:
            #如果大于20%的几率是文字图,屏幕截图,不回答
            score = float(obj['score'])
            percent = score * 100.0
            keyword = obj['keyword']
            if percent > 20 and ('屏幕截图' in keyword or '文字图' in keyword):
                self.ignore_reply = 1
            result_str = result_str + '\n' + str(round(
                percent, 0)) + '%的可能是:' + keyword + '(' + obj['root'] + ')'
            label_str = label_str + obj['root'] + '?' + obj['keyword'] + '?'

        print('label = ' + label_str)

        if self.ignore_reply == 0:
            self.result_string = result_str
            self.object_class = result_best['root']
            self.object_classkeyword = result_best['keyword']
            self.label_detect(label_str, result)
        else:
            print('要忽略显示')

    def answer(self):

        if self.ignore_reply == 1:
            return ''

        cls_arr = self.object_class.split('-')

        # 二级属性
        second_att = ''
        if self.object_keyword != '':
            second_att = '\n' + self.object_keyword
        # answer = '这是'+ self.object_classkeyword +'吧,一种' + cls_arr[len(cls_arr)-1] + second_att
        answer = self.result_string + second_att

        if '女人' in answer or '美女' in answer:
            return self.womengrade()
        else:
            return answer


# if __name__ == '__main__':
#     dectector = BaiduDetector('./car.jpeg')
#     dectector.general_detect()
#     print(dectector.object_class)
#     print(dectector.object_classkeyword)
#     print(dectector.object_keyword)
#     print(dectector.baike_des)
Exemple #30
0
from aip import AipImageClassify
""" 你的 APPID AK SK """
APP_ID = '15719765'
API_KEY = 'W3gO6OKVcKtGSGtIjN2rTZgW'
SECRET_KEY = '2T1cZrytwBGLLrjFosQjNvSczgIufLg2'

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """


def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()


image = get_file_content(
    'C:\\Users\\tencon2010\\Desktop\\20150620224348_ajx2z.jpeg')
""" 调用通用物体识别 """
client.advancedGeneral(image)
""" 如果有可选参数 """
options = {}
options["baike_num"] = 5
""" 带参数调用通用物体识别 """
print(client.advancedGeneral(image, options))