Мы работаем над Tensorflow для обучения набора данных изображений.
Для получения изображений мы записываем видео с помощью наших телефонов и, используя OpenCV в Python, извлекаем каждый кадр и сохраняем их как изображения JPG. Я перевожу некоторые из них в портретный режим с помощью приложения «Фото» в Windows 10.
Затем у нас есть собственный инструмент для написания аннотаций, написанный на Java, для маркировки каждого элемента, который мы видим на изображениях. Он возвращает файл CSV для каждого объекта с их координатами (в процентах).
Однако, когда я вчера запустил тренировку, через интерфейс тензорной доски я заметил, что некоторые из них не были правильно аннотированы (те, которые я вращал с фотографиями)
Вот изображение, открытое на Tensorboard, вы можете видеть, что банка очень плохо аннотирована.
![Image on tensorboard](https://i.stack.imgur.com/0ux56.jpg)
Оказывается, что если я открою это изображение с помощью нашего программного обеспечения Java, оно будет хорошо аннотировано, но, как вы можете видеть ниже, изображение является горизонтальным (оно не учитывает поворот, примененный к фотографиям):
![Image via the Java tool](https://i.stack.imgur.com/VStFj.png)
Если я открою его с помощью Paint или проводника, он появится в портретном режиме, как в тензорной доске.
Другой факт: если я отправлю изображение через Facebook и снова загрузлю его, оно будет отображаться в портретном режиме на инструменте Java, как это было бы с самого начала.
На этот раз я попытался повернуть изображение с помощью Paint, и оно правильно отображается в инструменте Java.
Код, который отображает изображение на Java:
panel.image = New File(srcFile);
Код, который сохраняет видеокадр в Python:
cap = cv.VideoCapture(video_path)
while cap.isOpened():
ret, frame = cap.read()
if ret:
try:
cv.imwrite(output_img_path, frame)
except Exception:
pass
else:
break
cap.release()
Знаете ли вы, почему Java игнорирует вращение, применяемое с помощью программного обеспечения Win10 Photos, и почему оно работает с помощью Paint?
Есть ли способ заставить Java принять это во внимание, потому что было бы очень неприятно начинать заново с нуля.
Заранее благодарю,