opencv — imread возвращает ложный размер

У меня есть изображение 720×1280. Я пытаюсь загрузить и показать это. Но я вижу повернутое на 90 градусов изображение (1280×720).

Мой простой код:

cout << "Size = " << imread(fileName).size() << endl;

Результат:

Size = [1280x720]

введите описание изображения здесь

Как я могу загрузить и показать изображение большого размера, используя opencv? Я использую opencv 2.4.10.

1

Решение

Изображение, вероятно, закодировано таким образом. Смартфоны обычно кодируют изображения в одном и том же направлении каждый раз, независимо от того, как оно хранится, но добавляют метаданные к изображению, чтобы программа просмотра могла показать его намеченным образом. OpenCV не принимает эти метаданные во внимание. Вы можете повернуть изображение самостоятельно, хотя. (Используйте 1 вместо 0, если изображение становится вверх ногами).

cv::transpose(image, image);
cv::flip(image, image, 0);

Если вы предпочитаете изменить образ на диске, вы можете использовать канитель. Просто откройте изображение и сохраните / экспортируйте его. Gimp будет использовать метаданные при открытии изображения, но перекодировать изображение без него.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]