【相似图检索】接口调用示例Java-API
756665228 发布于2017-11-20 浏览:6369 回复:28
1
收藏

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

加入开发者群:630770006

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

  • 相似图检索-入库
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/image-classify/v1/realtime_search/similar/add";
	/**
	 * 相似图检索-检索
	 */
	public static String IMAGESEARCH_SEARCH = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/search";
	/**
	 * 相似图检索-删除
	 */
	public static String IMAGESEARCH_DELETE = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/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": 941058339586895600, 
    "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/image-classify/v1/realtime_search/similar/add";
	/**
	 * 相似图检索-检索
	 */
	public static String IMAGESEARCH_SEARCH = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/search";
	/**
	 * 相似图检索-删除
	 */
	public static String IMAGESEARCH_DELETE = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/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");
		System.out.println("请求的参数为:"+params);
		String result = HttpUtil.post(IMAGESEARCH_SEARCH, "自己应用获取的AccessToken", params);
		System.out.println("检索返回的数据:"+result);
	}
}
  • 相似图检索检索返回的JSON字符串
{
    "log_id": 3643518697709272000, 
    "result_num": 1, 
    "result": [
        {
            "source_id": "bs25", 
            "score": 1, 
            "brief": null, 
            "origin_score": 1.0000001192093, 
            "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/image-classify/v1/realtime_search/similar/add";
	/**
	 * 相似图检索-检索
	 */
	public static String IMAGESEARCH_SEARCH = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/search";
	/**
	 * 相似图检索-删除
	 */
	public static String IMAGESEARCH_DELETE = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/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  or  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": 5761085594940259000
}
  • 相似图检索删除错误返回的JSON
{
    "log_id": 5726194430880976000, 
    "error_code": 216680, 
    "error_msg": "item not existed"
}

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

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

收藏
点赞
1
个赞
共28条回复 最后由756665228回复于2018-11-08
#28756665228回复于2018-11-08
#23 SpyderMan_one回复
您好,请问,相似图检索是检索的自建库的图片的,还是百度图片搜索的结果啊???
展开

自己创建的图库

1
#27我就是九候回复于2018-11-08

相似图这回好找多了

0
#26求代课1357回复于2018-11-08

示例清晰规范

0
#25想123666回复于2018-10-14

感恩大家的分享

0
#24756665228回复于2018-09-12
#23 SpyderMan_one回复
您好,请问,相似图检索是检索的自建库的图片的,还是百度图片搜索的结果啊???
展开

自建库入库的图片

1
#23SpyderMan_one回复于2018-09-12

您好,请问,相似图检索是检索的自建库的图片的,还是百度图片搜索的结果啊???

0
#22sasasas116回复于2018-06-28
#21 756665228回复
我测试了。确实会返回你那样的结果。 要不你提交个工单咨询一下百度人员

好的。谢谢了。

0
#21756665228回复于2018-06-28
#20 sasasas116回复
[代码] 返回的不是空{"score": 1, "brief": "{\"name\":\"q\n\", \"id\":\"1530087584\", \"code\":\"\u0011e\"
展开

我测试了。确实会返回你那样的结果。 要不你提交个工单咨询一下百度人员

1
#20sasasas116回复于2018-06-28
//ADD
/*String Filepath = "C:/Users/KGB/Desktop/shan/06.jpg";
			
String image = Base64Utils.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+"\", \"code\":\"我来\"}";
			
System.out.println("请求的参数为:"+params);
			
String result = HttpUtil.post(ImageAPI.MY_RUKU_API, access_token, params);
			
System.out.println("入库返回的数据:"+result);*/
			
			
			
			
//SEARCH
String Filepath = "C:/Users/KGB/Desktop/shan/06.jpg";
			
String image = Base64Utils.encode(FileUtil.readFileByBytes(Filepath));
			
String params =  URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(image, "UTF-8");
			
System.out.println("请求的参数为:"+params);
			
String result = HttpUtil.post(ImageAPI.MY_SEARCH_API, access_token, params);
			
System.out.println("检索返回的数据:"+result);

返回的不是空{"score": 1, "brief": "{\"name\":\"q\n\", \"id\":\"1530087584\", \"code\":\"\u0011e\"

0
#19756665228回复于2018-06-28
#18 sasasas116回复
我的代码是这样的[图片]

代码可以用代码块。发的图片看不清楚。

隐约看着是入库 name为 上 

你返回的brief为空?

1
#18sasasas116回复于2018-06-28

我的代码是这样的

0
#17756665228回复于2018-06-28
#16 sasasas116回复
比如说我传的\"name\":\"山上\",返回来的\"q\n\" 

你用什么语言?你发送请求用UTF-8那检索请求返回接收内容也要UTF-8 

1
#16sasasas116回复于2018-06-28

比如说我传的\"name\":\"山上\",返回来的\"q\n\" 

0
#15756665228回复于2018-06-28
#14 sasasas116回复
brief里面存在中文的时候。返回的为什么不是中文字呀

那返回了什么呢?返回的格式也是UTF-8记得自己处理一下哦

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

brief里面存在中文的时候。返回的为什么不是中文字呀

0
#13放弃一切1020回复于2018-05-15
#12 756665228回复
你只传递image参数试试。其他参数都是非必须的

感谢大佬,只传一个image,result有结果了,问题解决了,感谢。

0
#12756665228回复于2018-05-14
#11 放弃一切1020回复
相似图像的搜索[图片]

你只传递image参数试试。其他参数都是非必须的

1
#11放弃一切1020回复于2018-05-14
#9 756665228回复
具体是哪个接口返回的呢。

相似图像的搜索

0
#10放弃一切1020回复于2018-05-14

相似图像的搜索

0
#9756665228回复于2018-05-13
#8 放弃一切1020回复
为什么我返回的是这个[图片],好几天了,没解决。求解答。

具体是哪个接口返回的呢。

0
TOP
切换版块