1. 程式人生 > >使用百度雲的影象識別

使用百度雲的影象識別

最近,老大讓我研究下百度雲的影象識別,以為會有android版本的,沒想到只有java sdk,沒辦法,自己調著來唄。

百度雲提供的使用說明把我看得好累,先把兩個jar包放進去很簡單,so easy,然後讓新建個AipImageClassifyClient,初始化這個東東

// 初始化一個AipImageClassifyClient
AipImageClassifyClient client = new AipImageClassifyClient(APP_ID, API_KEY, SECRET_KEY);

結果找不到,我的天,我一度以為他讓我自己創個類,嚇哭我了,最後才發現不是什麼AipImageClassifyClient,而是AipImageClassify,很好,類終於出來了。然後根據說明給個本地圖片進行識別,照著寫了,結果報錯說主執行緒不能執行太複雜的過程之類的,就給他加執行緒裡了。第一天沒搞出來,加到執行緒還報錯,當時就蒙了,然後找了一個

http://blog.csdn.net/woshi136584/article/details/78295552 打算參考這寫,我等級太低就打算照搬吧,結果一寫發現我的access_token獲取不到,什麼鬼,整了一天,最後聯絡百度雲後臺反應,第一天就這樣不了了之了。第二天再試,發現access_token有了,我就趕緊試下,結果把access_token值加進去還是獲取不到識別的json值,還好android studio可以看到jar包裡的原始碼,一看才發現對請求資料路徑什麼的人家都封裝好了,也不用請求什麼的,我就打算按照文件裡再來一遍,我還就不信了,結果還是讓我把獲取資料的jsonobject那個放到執行緒裡,放嘛,然後靜等結果。出來了,結果出來了,把我高興的呀,雖然有的不太準,但是結果有了。

我是用的本地圖片,所以讀寫許可權不能忘哦。

程式碼附上:

TextView result;
ImageView iv;
String imageurl="/storage/emulated/0/cai/cai1.jpg";
AipImageClassify client;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
result = (TextView) findViewById(R.id.text
); iv = (ImageView) findViewById(R.id.image); client=new AipImageClassify(APP_ID,API_KEY,SECRET_KEY); iv.setImageURI(Uri.parse(imageurl)); HashMap<String, String> options = new HashMap<String, String>(); options.put("top_num","3"); new Thread(networkTask).start(); String path="/storage/emulated/0/cai"; File fileAll=new File(path); File[] files=fileAll.listFiles(); for (int i = 0; i <files.length ; i++) { File file=files[i]; } } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bundle data = msg.getData(); String val = data.getString("value"); Log.i("mylog", "請求結果為-->" + val); // TODO result.setText(val); } }; /** * 網路操作相關的子執行緒 */ Runnable networkTask = new Runnable() { @Override public void run() { // TODO // 在這裡進行 http request.網路請求相關操作 HashMap<String,String> hashMap=new HashMap<String, String>(); hashMap.put("top_num","3"); JSONObject res = client.dishDetect(imageurl,hashMap); Message msg = new Message(); Bundle data = new Bundle(); data.putString("value", res.toString()); msg.setData(data); handler.sendMessage(msg); } };