Я новичок в программировании Android.У меня есть код для обработки изображения, написанного на Java с использованием OpenCV.Я думаю повторно использовать код.Для этого мне нужно выбрать изображение и создать для него Mat
объект.
Я настроил прослушиватель событий OnClick и вызываю функцию, которая, в свою очередь, использует Intent для выбора изображения.Вызов функции выглядит следующим образом.
selectImage.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v){
selectImageFromGallery();
}
}
);
Код для selectImageFromGallery()
выглядит следующим образом:
private void selectImageFromGallery(){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/png");
if(intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent , SELCT_IMAGE_CODE);
}
}
Я обрабатываю результат, возвращаемый Intent, следующим образом.
@Override
protected void onActivityResult(int requestCode , int resultCode , Intent data){
if(resultCode == RESULT_OK){
Uri imageUri;
if(data == null || data.getData()== null){
imageUri = uriPhoto;
// Log.i("URI","HERE");
}else{
imageUri = data.getData();
Log.i("URI",imageUri.toString());
// I'm GETTING URI OF THE SELECTED IMAGE,BEING LOGGED SUCCESSFULLY !
Imgcodecs imageCodecs = new Imgcodecs();
Mat obj = imageCodecs.imread(imageUri.getPath());
Log.i("URI" , "MAT OBJECT CREATED SUCCESSFULLY");
Log.i("URI" , new Integer((int) obj.size().height).toString());
Log.i("URI" , new Integer((int) obj.size().width).toString());
}
Intent intent = new Intent();
intent.setData(imageUri);
setResult(RESULT_OK , intent);
finish();
}
}
Но в LogCat я получаю размер изображения равным 0 (размер выбранного изображения - 2160 x 1080), поскольку я записываю в журнал высоту и ширину объекта Mat
.
Соответствующая информация LogCat:
2019-02-06 23:48:21.927 27321-27321/com.example.hari.imagesteganography I/URI: content://com.android.providers.media.documents/document/image%3A110235
2019-02-06 23:48:21.938 27321-27321/com.example.hari.imagesteganography I/URI: MAT OBJECT CREATED SUCCESSFULLY
2019-02-06 23:48:21.940 27321-27321/com.example.hari.imagesteganography I/URI: 0
2019-02-06 23:48:21.940 27321-27321/com.example.hari.imagesteganography I/URI: 0
Я успешно настроил OpenCV
с моим проектом и правильно загрузил его с помощью System.loadLibrary("opencv_java3")
Это правильный способ созданияMat
Объект из изображения, выбранного пользователем?
Если нет, как мне создать Mat
объект в этом сценарии?
Спасибо.