public void btn_camera_takepic(View view) { Log.i(TAG, "btn_camera_takepic"); filePath = CommonUtil.CAMERAFOLDER.getAbsolutePath() + File.separator + System.currentTimeMillis() + ".jpg"; mOpenCvCameraView.takePicture(filePath); btn_camera_takepic.setText("Take this to replace!"); ToastUtil.showShortToast(getApplicationContext(), filePath + " saved"); bPictaken = true; }
public void btn_camera_ok(View view) { Log.i(TAG, "btn_camera_ok"); if (!bPictaken) { ToastUtil.showShortToast(getApplicationContext(), "亲要先进行拍照哟!"); return; // do not forget! } // async do -> runtime exception: method called after release() // maybe the activity releases before the thread returns! final Mat image = Highgui.imread(filePath); int width = image.width(); int height = image.height(); if (width > height) { // portrait should be rotated! direction? yes! Core.flip(image.t(), image, 0); // counter-clock wise 90 } Imgproc.cvtColor(image, image, Imgproc.COLOR_BGR2GRAY); // gray Imgproc.resize(image, image, new Size(CommonUtil.IMAGE_WIDTH, CommonUtil.IMAGE_HEIGHT)); // int total = 0; String stotal = CommonUtil.userProps.getProperty("total"); if (null != stotal) { // have some users! total = Integer.parseInt(stotal); } if (userid <= 0) { // not have this one! userid = total + 1; try { // save new data! CommonUtil.userProps.setProperty("total", String.valueOf(userid)); CommonUtil.userProps.setProperty(String.valueOf(userid), name); CommonUtil.saveUserProperties(CommonUtil.userProps); } catch (Exception e) { e.printStackTrace(); } // creat folder for this user! File userfolder = new File( CommonUtil.USERFOLDER.getAbsolutePath() + File.separator + String.valueOf(userid)); if (!userfolder.exists()) { userfolder.mkdir(); } } filePath = CommonUtil.USERFOLDER.getAbsolutePath() + File.separator + String.valueOf(userid) + File.separator + System.currentTimeMillis() + ".jpg"; // folder (user / userid) Highgui.imwrite(filePath, image); // save data to facedata.txt String data = filePath + ";" + userid + "\n"; // user image file path;user id try { RandomAccessFile facedataFile = new RandomAccessFile( CommonUtil.SDFOLDER + File.separator + CommonUtil.FACEDATA_FILENAME, "rw"); facedataFile.seek(facedataFile.length()); facedataFile.write(data.getBytes()); facedataFile.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Log.i(TAG, "image process ok"); // add this pic to the model data new AsyncTask<Void, Void, Boolean>() { @Override protected Boolean doInBackground(Void... params) { xface.addImage(image, userid); // how to determinate the result of adding image?!TODO! return true; } @Override protected void onPostExecute(Boolean result) { if (result) { ToastUtil.showShortToast(getApplicationContext(), "照片保存成功,模型建立好咯!"); } else { ToastUtil.showShortToast(getApplicationContext(), "照片保存成功,模型建立失败啦!"); } btn_camera_ok.setEnabled(true); } @Override protected void onPreExecute() { ToastUtil.showShortToast(getApplicationContext(), "照片保存中..."); btn_camera_ok.setEnabled(false); // can not let user save two images at the same time! } }.execute(); }