剛開始學習OpenCv4Android編程,做了個小demo。
就是一個主界面上添加一個ImageView 兩個Button控件。
一個Button用來從系統相冊選擇一張照片;
另一個Button是用來完成灰度化的功能;
在開發過程中遇到Android從系統圖庫中選擇一張圖片的問題,查閱了一些資料我將自己的辦法貼在下面。
步驟1:編寫重定向到圖片庫的代碼
我們需要寫一些Java代碼來處理按鈕的點擊事件,而重定向到圖片庫的代碼如下:
Intent i = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, RESULT_LOAD_IMAGE);
注意:這里的RESULT_LOAD_IMAGE是一個整形常量需要傳到startActivityForResult()方法。
步驟2:獲取選中的圖片
一旦選擇了一張圖片,onActivityResult()方法將會被調用。我們需要處理這個方法得到的數據,代碼如下:
1 @Override 2 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 3 super.onActivityResult(requestCode, resultCode, data); 4 5 if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 6 Uri selectedImage = data.getData(); 7 String[] filePathColumn = { MediaStore.Images.Media.DATA }; 8 9 Cursor cursor = getContentResolver().query(selectedImage, 10 filePathColumn, null, null, null); 11 cursor.moveToFirst(); 12 13 int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 14 String picturePath = cursor.getString(columnIndex); 15 cursor.close(); 16 }
注意:onActivityResult()方法只有當圖片被選中后才會調用。在這個方法中,我們需要檢查requestCode是否是我們之前傳給startActivityForResult()方法的RESULT_LOAD_IMAGE。
程序截圖: