Android: BitmapFactory.decodeFile / OpenCV возвращает неработающее растровое изображение - PullRequest
1 голос
/ 28 января 2012

Я делаю снимок с активностью камеры, а затем пытаюсь прочитать его из сохраненного местоположения. К сожалению, растровое изображение возвращается:

Bitmap bimage = BitmapFactory.decodeFile( path );

имеет высоту и ширину = -1. Я использую OpenCV и когда я читаю изображение с

Mat img = Highgui.imread(path);

Я получил правильную матрицу. Хотя я не могу преобразовать его в растровое изображение. При выполнении

bmp = Bitmap.createBitmap(img.cols(), img.rows(), Config.ARGB_8888);
Utils.matToBitmap(img, bmp);

Я снова получаю тот же результат: растровое изображение с шириной и высотой = -1. Нужно ли следить за форматом изображения? Могу ли я установить это на камеру намерения? Не должен

BitmapFactory.decodeFile( path );

автоматически понимаете, что это за формат?

Я запускаю это на Samsung galaxy S с Android 2.3.1 и OpenCV 2.3.1

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 28 января 2012

Samsung имеет некоторые проблемы с намерением камеры Снимок фотографии Намерение вызывает исключение NullPointerException только для телефонов Samsung

Попробуйте вот так

// для вызова камеры

String _path = Environment.getExternalStorageDirectory()
                    + File.separator + "TakenFromCamera.png";
            File file = new File(_path);
            Uri outputFileUri = Uri.fromFile(file);
            Intent intent = new Intent(
                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            startActivityForResult(intent, 1212);

// в действии onResult

if (requestCode == 1212) {
            String _path = Environment.getExternalStorageDirectory()
                    + File.separator + "TakenFromCamera.png";
            mBitmap = BitmapFactory.decodeFile(_path);
            if (mBitmap == null) {
            } else {
                Intent intent = new Intent(AYGCamActivity.this,
                        myGalleryImage.class);

                startActivity(intent);
            }

        }
...