我刚刚开始学习 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/