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

本文涉及的产品
图像搜索,7款服务类型 1个月
简介: 记一次使用阿里云图像搜索功能阿里云提供的图像搜索业务:业务介绍地址:https://ai.aliyun.com/imagesearch?spm=5176.10695662.1280361.130.

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

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

业务介绍地址:

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

image_20190318195139873


提供两种服务:

  • 商品图像搜索;
  • 通用图像搜索;

目前在该页支持的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')
目录
相关文章
|
1月前
|
JSON 算法 API
京东以图搜图功能API接口调用算法源码python
京东图搜接口是一款强大工具,通过上传图片即可搜索京东平台上的商品。适合电商平台、比价应用及需商品识别服务的场景。使用前需了解接口功能并注册开发者账号获取Key和Secret;准备好图片的Base64编码和AppKey;生成安全签名后,利用HTTP客户端发送POST请求至接口URL;最后解析JSON响应数据以获取商品信息。
|
2月前
|
搜索推荐 API 对象存储
|
2月前
|
分布式计算 搜索推荐 API
|
4月前
|
存储 人工智能 文字识别
极空间 NAS 上线“AI 实验室”功能:自然语言搜图、以图搜图、文字识别
【2月更文挑战第17天】极空间 NAS 上线“AI 实验室”功能:自然语言搜图、以图搜图、文字识别
236 5
极空间 NAS 上线“AI 实验室”功能:自然语言搜图、以图搜图、文字识别
|
10月前
|
机器学习/深度学习 存储 算法
阿里云国际站:拍立淘-以图搜图中的图像搜索算法是怎么样的?
@luotuoemo飞机@TG 阿里云国际站:拍立淘-以图搜图中的图像搜索算法是怎么样的?图像搜索在现代搜索系统中扮演了重要角色,尤其在电子商务网站如阿里巴巴等,它更是一个必不可少的功能。拍立淘是阿里云国际站的一个以图搜图功能,它使用了复杂的图像搜索算法进行图片匹配和识别。以下是对该算法的简单描述。
|
机器学习/深度学习 人工智能 开发者
关于阿里云的图像搜索的创建和使用
关于阿里云的图像搜索的创建和使用
关于阿里云的图像搜索的创建和使用
|
存储 前端开发 Serverless
阿里云视觉智能平台提供了人脸识别和图像搜索的API接口
阿里云视觉智能平台提供了人脸识别和图像搜索的API接口
1586 0
|
人工智能
阿里云产品体系分为6大分类——人工智能——分为10种模块——图像搜索
阿里云产品体系分为6大分类——人工智能——分为10种模块——图像搜索自制脑图
155 0
|
算法
阿里云图像搜索技术创新-工业五金图片搜索
阿里云图像搜索产品3月17日正式发布工业五金搜索模型,通过大规模算法模型训练,可在海量五金图片素材中快速定位到图片中五金件的同款或相似款商品原图,识别过程中可有效避免图片方位变化、光照变化、背景场景变化等情况对搜索结果的影响。以此帮助工业五金电商商城、仓库等快速找到同款、相似款。通过输入工业五金类图片,可以在海量商品库中找到同款、相似款配件,并返回对应的配件信息,提升五金类产品购物效率,帮忙更多工业五金制造和零售等企业轻松上云。
490 57
阿里云图像搜索技术创新-工业五金图片搜索
|
算法
阿里云图像搜索应用篇-家具家居图片搜索
阿里云图像搜索产品于2022年3月17日正式发布家具家居图像搜索模型,通过大规模算法模型训练,可在海量图片素材中快速定位到与原图中的同款或相似款家居或家具图片,识别过程中可有效避免图片翻转、局部、颜色变换、款式微调、花纹变换等情况对搜索结果的影响,针对床上用品、家具、室内设计图等多个场景可快速找到相似图片或商品。可广泛应用于室内设计图片素材网站、 家纺类电商网站、家具家居类电商网站以及各种内容导购网站等。
537 0
阿里云图像搜索应用篇-家具家居图片搜索