Почему Bitmap.createBitmap () поворачивает мое изображение? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть изображение, для которого мне нужно выполнить распознавание рукописного ввода на клиенте Android с помощью TFLite.

Чтобы проверить это, я вырезал некоторые части изображения и передал их модели, но получал очень низкую точностьнесмотря на точность модели на 90%.

Для дальнейшей отладки я проверял правильность своей режущей части.Следующий код - это тот, который я использую для обрезки своего изображения.

Bitmap test = Bitmap.createBitmap(src, 494,213,30, 33);

При этом

new Thread() {
        @Override
        public void run() {
            try (FileOutputStream out = new FileOutputStream(path+"/test.jpg")) {
                (test).compress(Bitmap.CompressFormat.JPEG, 100, out); // bmp is your Bitmap instance
                // PNG is a lossless format, the compression factor (100) is ignored
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }.start();

Изображение должным образом сохраняется в моем хранилище.

enter image description here

Но я попробовал что-то вроде этого.

for(int i =0;i<30;i++){
     for(int j=0;j<33;j++){
        System.out.print(Color.red(test.getPixel(i,j))+" ");
     }
     System.out.println();
}

Я использовал матрицу и сформировал следующее изображение.enter image description here

Как видите, мой исходный растр из 1 вращается.

Может кто-нибудь объяснить, почему это происходит ??И некоторый альтернативный подход к этому также поможет

Заранее спасибо.

Обновление: Я попробовал следующее

ExifInterface ei= null;
try {
   ei = new ExifInterface(root+"/test.jpg");
} catch (IOException e) {
   e.printStackTrace();
}
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                    ExifInterface.ORIENTATION_UNDEFINED);
System.out.println("Orientation is "+orientation);

Мой вывод:

Ориентация 0

...