记一次使用阿里云图像搜索功能

简介: 记一次使用阿里云图像搜索功能阿里云提供的图像搜索业务:业务介绍地址:https://ai.aliyun.com/imagesearch?spm=5176.10695662.1280361.130.

记一次使用阿里云图像搜索功能

阿里云提供的图像搜索业务:

业务介绍地址:

https://ai.aliyun.com/imagesearch?spm=5176.10695662.1280361.130.11a61e6d5n1K8L

image_20190318195139873


提供两种服务:
  • 商品图像搜索;
  • 通用图像搜索;

开发文档

文档地址:

https://help.aliyun.com/document_detail/66616.html

目前在该页支持的sdk有:

  • Java
  • Nodejs
  • PHP

从文档来看使用起来十分复杂,想用python实现的话,借鉴这份资料真是费了很大力气,一直没有跑通,提示构建的签名与它计算的签名不匹配。

后面找寻python sdk。

python sdk使用指南

https://help.aliyun.com/document_detail/67117.html

按照这个介绍,自己安装了核心库,并歪打正着的通过pip安装找到了该服务的隐藏python sdk!

pip install aliyun-python-sdk-imagesearch

然后去aliyun的gihub页面找相关的包介绍:

https://github.com/aliyun/aliyun-openapi-python-sdk/tree/master/aliyun-python-sdk-imagesearch

介绍不是很详细,也花了一天的时间试错。

image_20190318195820335

最终调通,该sdk对python3目前也不支持,卡在字符串编码这块,后续应该会解决这个问题。

使用该sdk,更改下包的源码(base64编码的字符串问题),在python3下跑通整个过程,上传图片,删除图片以及搜索图片。

Add_item

#!/usr/bin/env python
# fileUsing: test ali api 's add item

from aliyunsdkcore.client import AcsClient
from aliyunsdkimagesearch.request.v20180120.AddItemRequest import AddItemRequest
import sys

# set parameters
accessKeyId = 'xxx'
accessKeySecret = 'xxx'
instanceName = 'xxx'
regionId = 'cn-shanghai'
domain = 'imagesearch.cn-shanghai.aliyuncs.com'

client = AcsClient(accessKeyId, accessKeySecret, regionId)
add_req = AddItemRequest()


def add_img(img_path):
    """ add img """
    pid = img_path.split('/')[-1].split('_')[0]
    item_id = pid
    cust_content = pid
    cate_id = '0'
    pic_name = pid
    pic_content = open(img_path, 'rb').read()
    add_req.set_instance_name(instanceName)
    add_req.set_item_id(item_id)
    add_req.set_cate_id(cate_id)
    add_req.set_cust_content(cust_content)
    add_req.add_picture(pic_name, pic_content)
    process_flag = add_req.build_post_content()
    response = client.do_action_with_exception(add_req)
    print(response.decode('utf8'))


# test
img_path = sys.argv[1]
add_img(img_path)

Del_item

#!/usr/bin/env python
# fileUsing: test ali api 's del item

from aliyunsdkcore.client import AcsClient
from aliyunsdkimagesearch.request.v20180120.DeleteItemRequest import DeleteItemRequest
import sys

# set parameters
accessKeyId = 'xxx'
accessKeySecret = 'xxxx'
instanceName = 'xxxxx'
regionId = 'cn-shanghai'
domain = 'imagesearch.cn-shanghai.aliyuncs.com'

client = AcsClient(accessKeyId, accessKeySecret, regionId)
del_req = DeleteItemRequest()


def del_img(img_path):
    """ del img """
    pid = img_path.split('/')[-1].split('_')[0]
    item_id = pid
    pic_name = pid

    del_req.set_instance_name(instanceName)
    del_req.set_item_id(item_id)
    del_req.add_picture(pic_name)
    process_flag = del_req.build_post_content()
    response = client.do_action_with_exception(del_req)
    print(response.decode('utf8'))


# test
img_path = sys.argv[1]
del_img(img_path)

Search_item

#!/usr/bin/env python
# fileUsing: test ali api 's search item

from aliyunsdkcore.client import AcsClient
from aliyunsdkimagesearch.request.v20180120.SearchItemRequest import SearchItemRequest
import sys

# set parameters
accessKeyId = 'xxx'
accessKeySecret = 'xxxx'
instanceName = 'xxxx'
regionId = 'cn-shanghai'
domain = 'imagesearch.cn-shanghai.aliyuncs.com'

client = AcsClient(accessKeyId, accessKeySecret, regionId)
search_req = SearchItemRequest()


def search_img(img_path):
    """ search img """
    pid = img_path.split('/')[-1].split('_')[0]
    pic_content = open(img_path, 'rb').read()
    search_req.set_instance_name(instanceName)
    search_req.set_num(100)  # return nums of search
    search_req.set_search_picture(pic_content)
    process_flag = search_req.build_post_content()
    response = client.do_action_with_exception(search_req)
    print(response.decode('utf8'))


# test
img_path = sys.argv[1]
search_img(img_path)

源码更改地方

encoded_pic_name = str(base64.b64encode(bytes(pic_name, 'utf-8')), encoding='utf-8')
encoded_pic_content = base64.b64encode(pic_content).decode('utf8')
目录
相关文章
|
3月前
|
人工智能 机器人 Serverless
魔搭大模型一键部署到阿里云函数计算,GPU 闲置计费功能可大幅降低开销
魔搭大模型一键部署到阿里云函数计算,GPU 闲置计费功能可大幅降低开销
578 2
|
3月前
|
存储 Java 对象存储
springboot配置阿里云OSS存储实现文件上传下载功能
【1月更文挑战第1天】springboot配置阿里云OSS存储实现文件上传下载功能
507 2
|
3月前
|
文字识别 API 数据安全/隐私保护
可以使用阿里云文字识别服务中的个人证照识别功能。
可以使用阿里云文字识别服务中的个人证照识别功能。【1月更文挑战第21天】【1月更文挑战第102篇】
17 1
|
5月前
|
机器学习/深度学习 存储 算法
阿里云国际站:拍立淘-以图搜图中的图像搜索算法是怎么样的?
@luotuoemo飞机@TG 阿里云国际站:拍立淘-以图搜图中的图像搜索算法是怎么样的?图像搜索在现代搜索系统中扮演了重要角色,尤其在电子商务网站如阿里巴巴等,它更是一个必不可少的功能。拍立淘是阿里云国际站的一个以图搜图功能,它使用了复杂的图像搜索算法进行图片匹配和识别。以下是对该算法的简单描述。
|
1月前
|
算法 Java 开发工具
使用阿里云KMS产品针对 Springboot 接口参数加密解密功能
针对Springboot里面使用开源工具使用加解密,替换成阿里云KMS产品进行加解密;
118 1
|
2月前
|
文字识别 安全 API
阿里云文字识别OCR的发票凭证识别功能可以通过API接口的形式进行调用
【2月更文挑战第5天】阿里云文字识别OCR的发票凭证识别功能可以通过API接口的形式进行调用
74 5
|
2月前
|
弹性计算 Ubuntu Linux
阿里云助力《幻兽帕鲁》快速开服:全新自动部署功能上线,仅需10秒即可完成部署!
阿里云助力《幻兽帕鲁》快速开服:全新自动部署功能上线,仅需10秒即可完成部署!阿里云服务器搭建帕鲁服务器游戏,服务器稳定无卡顿,先下载SteamCMD,并运行;然后下载Palserver,修改服务ini配置,启动PalServer,进入游戏服务器。今天分享阿里云创建幻兽帕鲁服务器教程。
|
2月前
|
弹性计算 搜索推荐 Linux
阿里云自动部署【幻兽帕鲁/Palworld】功能上线,10秒全自动开服!
阿里云轻量应用主机Lighthouse上线幻兽帕鲁应用模板功能 ,用户只需要点三次鼠标,最快10秒就能自动安装好幻兽帕鲁主机,和自己的朋友一起开心“抓帕鲁”。同时,用户还可以在阿里云控制台的面板直接调整幻兽帕鲁的经验倍率、死亡惩罚等游戏配置,实现便捷、个性化的游戏体验。
阿里云自动部署【幻兽帕鲁/Palworld】功能上线,10秒全自动开服!
|
6月前
|
运维 安全 Cloud Native
阿里云安全中心常用功能配置_云安全中心介绍
阿里云安全中心常用功能配置_云安全中心介绍
74 0
|
2月前
|
API 网络安全
阿里云视觉智能平台中人脸搜索功能在长时间不使用后第一次使用时出现连接失败
阿里云视觉智能平台中人脸搜索功能在长时间不使用后第一次使用时出现连接失败
228 2