Android OpenCV Utils.BitmapToMap исключения во время выполнения помочь? - PullRequest
1 голос
/ 05 ноября 2011

Я пытаюсь преобразовать JPEG в растровом изображении в мат.Я знаю, что метод Utils поддерживает только изображения в формате RGB888, поэтому я заставляю свою камеру быть в формате JPEG, делаю снимок, декодирую его и конвертирую в формат RGB 888, а затем вызываю метод utils, чтобы получить мат из него,Вот основной код:

Bitmap imageBitmap = BitmapFactory.decodeByteArray(mData, 0, mData.length);
double scale = 0.5; // Make the image smaller incase I was running out of memeory.
imageBitmap = Bitmap.createScaledBitmap(imageBitmap, (int) (imageBitmap.getWidth() * scale),
                    (int) (imageBitmap.getHeight() * scale), false);

imageBitmap = PNGtoRGB888(imageBitmap);
Mat m = Utils.bitmapToMat(imageBitmap); // I get a runtime exception

Вот метод PNGtoRGB888:

private Bitmap PNGtoRGB888(Bitmap _img)
    {
        int numPixels = _img.getWidth() * _img.getHeight();
        int[] pixels = new int[numPixels];

        // Get Bitmap's pixels. Each int is the color values for one pixel.
        _img.getPixels(pixels, 0, _img.getWidth(), 0, 0, _img.getWidth(), _img.getHeight());

        // Create a Bitmap of the appropriate format.
        Bitmap result = Bitmap.createBitmap(_img.getWidth(), _img.getHeight(), Config.ARGB_8888);

        // Set RGB pixels.
        result.setPixels(pixels, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight());
        return result;
    }

Любые идеи, почему я получу исключение времени выполнения?!?!?!?

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Мне пришлось реорганизовать мой путь сборки, и это сработало.

0 голосов
/ 05 ноября 2011

Возможно, вы захотите создать SoftReference для ImageBitMap

SoftReference<BitMap> bimap = 
    new SoftRerenceBitmap<Bitmap>(BitmapFactory.decodeByteArray(
            mData, 0, mData.length);
...