python - Keras 预处理在使用 load_img() 导入图像时旋转图像

标签 python python-3.x tensorflow image-processing keras

我刚刚开始学习 Keras API,并且正在尝试 MNIST 数据集。我让它工作正常,但当我尝试测试我拍摄的图片时,我对 keras.preprocessing.image 库中的函数 load_img() 有问题。它将纵向图像导入为横向图像。我用智能手机在纵向模式下拍摄了这张照片,Windows 正确显示宽度 3024 和高度 4032 像素。

当我加载该图像并打印宽度和高度时,它显示为 4032x3024。另外,当我执行 img.show() 时,它似乎逆时针旋转了 90 度。所有这些都是在加载后立即发生的,没有任何处理。我尝试查看 load_img() 的 API,但找不到任何使其在加载时旋转的参数。

这是一个向您展示问题的虚拟示例:

from keras.preprocessing.image import load_img

img = load_img('filepath/test.jpg') # Load portrait mode image Windows says 3024x4032
width, height = img.size
print(width, height) # Prints 4032 3024
img.show() # Shows it rotated by 90 degrees counterclockwise

我希望它以纵向模式导入。为什么它会旋转?问题是在横向模式下拍摄的照片也以 4032 x 3024 的格式导入,因此我无法区分这两个方向。我希望能够在纵向模式下旋转图像,但在横向模式下则不能旋转图像。

编辑:我只是尝试使用 Pillow 加载图像,结果完全相同

最佳答案

用途:

jhead -v YourImage.jpg

检查名为方向的 EXIF 参数 - 手机摄像头将其设置为可以旋转图像。尝试一张有效的图像和另一张“不高兴”的图像。

您可以使用ImageMagick纠正它:

convert unhappy.jpg -auto-orient happy.jpg

或者使用 exiftool 可能更容易。讨论与示例 here .

关于python - Keras 预处理在使用 load_img() 导入图像时旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56757040/

相关文章:

python - 使用本地时区在 Python 中获取正确的时区偏移量

c# - XmlRpcResponse 序列化到 c# 对象

python - 匹配 pandas 列中列表和列表之间的相似元素

python-3.x - Python3 的 bs4( BeautifulSoup )在 visual studio 中不起作用

python - 如何使用sox重新采样和正确连接wav文件?

swift - 如何区分输入张量的 'k' 个副本 [Swift for TensorFlow]

python - 列表列表的总和;返回总和列表

javascript - 在 django 中获取列表值

tensorflow - 如果二元交叉熵猜测不正确,则对样本进行权重

python - TensorFlow 数据不适用于多输入 keras 模型