我刚刚开始学习Keras API,正在尝试MNIST数据集。我可以正常工作,但是尝试测试拍摄的照片时,功能load_img()
from the keras.preprocessing.image
库有问题。它将纵向图像导入为横向图像。我使用智能手机以纵向模式拍摄了照片,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加载图像,结果完全一样
答案 0 :(得分:1)
使用:
jhead -v YourImage.jpg
检查称为Orientation
的EXIF参数-手机摄像头对其进行了设置,以便可以旋转图像。尝试使用其中一张有效的图片和另一张“不满意” 的图片。
您可以使用 ImageMagick 对其进行纠正:
convert unhappy.jpg -auto-orient happy.jpg
或者使用exiftool
更容易。讨论和示例here。