【相同图检索】接口调用示例Java-API
756665228 发布于2017-11-20 浏览:4347 回复:19
3
收藏

 

http://ai.baidu.com/forum/topic/show/496543 该帖子告知了如何创建应用并且申请建库

加入开发者群:630770006

本帖子主要是给出了Java-API 调用相同图检索接口示例代码。

  • 相同图检索—入库
/**

 * @Company 小帅丶科技
 * @author 小帅丶
 */
package com.xiaoshuai.baidu.imageserach;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.Date;

import com.baidu.aip.util.Base64Util;
import com.xiaoshuai.baidu.util.FileUtil;
import com.xiaoshuai.baidu.util.HttpUtil;


/**
 * @author 小帅丶
 * @类名称  Test
 * @remark 
 * @date  2017-11-10
 */
public class Test {
	/**
	 * 相同图检索-入库
	 */
	public static String IMAGESEARCH_ADD = "https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/add";
	/**
	 * 相同图检索-检索
	 */
	public static String IMAGESEARCH_SEARCH = "https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/search";
	/**
	 * 相同图检索-删除
	 */
	public static String IMAGESEARCH_DELETE = "https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/delete";
	
	public static void main(String[] args) throws Exception {
		String Filepath = "G:/animal.jpg";
		String image = Base64Util.encode(FileUtil.readFileByBytes(Filepath));
		String id = new Date().getTime()/1000+"";
		String params =  URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(image, "UTF-8")+"&brief={\"name\":\"小动物\", \"id\":\""+id+"\"}";
		System.out.println("请求的参数为:"+params);
		String result = HttpUtil.post(IMAGESEARCH_ADD, "自己应用获取的AccessToken", params);
		System.out.println("入库返回的数据:"+result);
	}
}
  • 相同图检索入库返回的JSON字符串
{
    "log_id": 1109644778157971800, 
    "cont_sign": "870078332,3208787951"
}
cont_sign  输入图片签名,可用于删除 最好自己保存起来
  • 相同图检索—检索
package com.xiaoshuai.baidu.imageserach;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.Date;

import com.baidu.aip.util.Base64Util;
import com.xiaoshuai.baidu.util.FileUtil;
import com.xiaoshuai.baidu.util.HttpUtil;


/**
 * @author 小帅丶
 * @类名称  Test
 * @remark 
 * @date  2017-11-10
 */
public class Test {
	/**
	 * 相同图检索-入库
	 */
	public static String IMAGESEARCH_ADD = "https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/add";
	/**
	 * 相同图检索-检索
	 */
	public static String IMAGESEARCH_SEARCH = "https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/search";
	/**
	 * 相同图检索-删除
	 */
	public static String IMAGESEARCH_DELETE = "https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/delete";
	
	public static void main(String[] args) throws Exception {
		String Filepath = "G:/animal.jpg";
		String image = Base64Util.encode(FileUtil.readFileByBytes(Filepath));
		String params =  URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(image, "UTF-8");
		System.out.println("请求的参数为:"+params);
		String result = HttpUtil.post(IMAGESEARCH_SEARCH, "自己应用获取的AccessToken", params);
		System.out.println("检索库返回的数据:"+result);
	}
}
  • 相同图检索检索返回的JSON字符串
{
    "log_id": 3097813026698480000, 
    "result_num": 1, 
    "result": [
        {
            "source_id": "bs25", 
            "score": 0.99747755253923, 
            "brief": null, 
            "origin_score": 299, 
            "cont_sign": "870078332,3208787951"
        }
    ]
}
  • 相同图检索—删除
package com.xiaoshuai.baidu.imageserach;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.Date;

import com.baidu.aip.util.Base64Util;
import com.xiaoshuai.baidu.util.FileUtil;
import com.xiaoshuai.baidu.util.HttpUtil;


/**
 * @author 小帅丶
 * @类名称  Test
 * @remark 
 * @date  2017-11-10
 */
public class Test {
	/**
	 * 相同图检索-入库
	 */
	public static String IMAGESEARCH_ADD = "https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/add";
	/**
	 * 相同图检索-检索
	 */
	public static String IMAGESEARCH_SEARCH = "https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/search";
	/**
	 * 相同图检索-删除
	 */
	public static String IMAGESEARCH_DELETE = "https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/delete";
	
	public static void main(String[] args) throws Exception {
		String Filepath = "G:/animal.jpg";
		String image = Base64Util.encode(FileUtil.readFileByBytes(Filepath));
		String id = new Date().getTime()/1000+"";
		//2种删除方式。image 或者 cont_sign
//		String params =  URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(image, "UTF-8");
		String params =  "cont_sign=870078332,3208787951";
		System.out.println("请求的参数为:"+params);
		String result = HttpUtil.post(IMAGESEARCH_DELETE, "自己应用获取的AccessToken", params);
		System.out.println("删除返回的数据:"+result);
	}
}
  • 相同图检索删除正确返回的JSON字符串
{
    "log_id": 7016194145596504000
}
  • 相同图检索删除错误返回的JSON字符串

错误代码文档在线查询地址(非官方):http://aixiaoshuai.mydoc.io/

{
    "log_id": 7016194145596504000, 
    "error_code": 216680, 
    "error_msg": "item not existed"
}

代码挺简单的。转给需要的开发者们

小帅丶的个人微信小程序 可以扫码支持一下哦

收藏
点赞
3
个赞
共19条回复 最后由756665228回复于2019-10-11
#19756665228回复于2019-10-11
#18 曾经美好是回回复
[图片] 已经urlencode处理了 , base64的头部也去掉了 , 还是不行 , 方便加个好友吗
展开

主要我这也不会PHP呀。我的QQ:783021975

1
#18曾经美好是回回复于2019-10-11
#17 756665228回复
base64需要urlencode处理

已经urlencode处理了 , base64的头部也去掉了 , 还是不行 , 方便加个好友吗

0
#17756665228回复于2019-10-11
#16 曾经美好是回回复
您好 , 我是使用PHP的接口 , 但是用base64数据来检索 , 一直提示错误 {"log_id":4.8907506336272e+16,"error_code":216201,"error_msg":"image format error"} 但是直接用URL是正常的 , 这个是什么原因 , 论坛上的方法都试过了 , 还是没解决
展开

base64需要urlencode处理

1
#16曾经美好是回回复于2019-10-11

您好 , 我是使用PHP的接口 , 但是用base64数据来检索 , 一直提示错误
{"log_id":4.8907506336272e+16,"error_code":216201,"error_msg":"image format error"}
但是直接用URL是正常的 , 这个是什么原因 , 论坛上的方法都试过了 , 还是没解决

0
T
#15Tianluhua回复于2018-11-15
#14 756665228回复
你看文档的说明就行。

和文档上上说的不匹配呀。我上传图片时候写的是:1和6,客户端设置参数时候设置的是:10,代码:connection.setRequestPropert("tags","10");

但是服务器还是会将分类为:1和6的图片返回呢。

0
#14756665228回复于2018-11-15
#13 Tianluhua回复
我们手动上传图片到图库时候,单张图片填写的“摘要”和两个“分类”分别有什么作用?
展开

你看文档的说明就行。

1
T
#13Tianluhua回复于2018-11-15

我们手动上传图片到图库时候,单张图片填写的“摘要”和两个“分类”分别有什么作用?

0
#12tomkysoft回复于2018-10-27
alert("hello World !")
0
#11hefeitest回复于2018-07-31

post接口果然很方便很实用

0
#10756665228回复于2018-07-27
#9 诺亚舟研发中心回复
你好,请问一下,相同图片搜索返回值为{"result":[],"result_num":0,"has_more":false,"log_id":5695733042655108392} ,这是什么问题
展开

有可能你的图库没有符合的图片吧

1
#9诺亚舟研发中心回复于2018-07-25

你好,请问一下,相同图片搜索返回值为{"result":[],"result_num":0,"has_more":false,"log_id":5695733042655108392} ,这是什么问题

0
#8756665228回复于2018-07-07
#7 小凡123号回复
话说相同图搜索这个百度AI可以用在Android上吗?

这个不受限制。云端都是http协议的接口地址。只要你的语言能发送http请求就可以。

1
#7小凡123号回复于2018-07-07

话说相同图搜索这个百度AI可以用在Android上吗?

1
#6756665228回复于2018-06-27
#5 sasasas116回复
为什么brief里面存在中字返回不行。

???? 不太明白你的意思

1
#5sasasas116回复于2018-06-27

为什么brief里面存在中字返回不行。

0
#3笔墨哥回复于2017-11-21

内容很实用呢,好贴心

0
#2756665228回复于2017-11-20
  • 检索返回的字符串如下。上午接口貌似有点问题。检索没有返回brief字符内容
{
    "log_id": 7150841843364113000, 
    "result_num": 1, 
    "result": [
        {
            "source_id": "bs25", 
            "score": 0.99747755253923, 
            "brief": "{\"name\":\"ocr\", \"id\":\"1511156047\"}", 
            "origin_score": 299, 
            "cont_sign": "1811401151,4159350192"
        }
    ]
}

1
TOP
切换版块