使用百度雲的影象識別
最近,老大讓我研究下百度雲的影象識別,以為會有android版本的,沒想到只有java sdk,沒辦法,自己調著來唄。
百度雲提供的使用說明把我看得好累,先把兩個jar包放進去很簡單,so easy,然後讓新建個AipImageClassifyClient,初始化這個東東
// 初始化一個AipImageClassifyClient
AipImageClassifyClient client = new AipImageClassifyClient(APP_ID, API_KEY, SECRET_KEY);
結果找不到,我的天,我一度以為他讓我自己創個類,嚇哭我了,最後才發現不是什麼AipImageClassifyClient,而是AipImageClassify,很好,類終於出來了。然後根據說明給個本地圖片進行識別,照著寫了,結果報錯說主執行緒不能執行太複雜的過程之類的,就給他加執行緒裡了。第一天沒搞出來,加到執行緒還報錯,當時就蒙了,然後找了一個
我是用的本地圖片,所以讀寫許可權不能忘哦。
程式碼附上:
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); } };