超级有用的链接
解决方案:
需要在读取图片时,同时解析图片的 EXIF 中的方位信息,将图片转正,再进行后续的其他操作.
原代码:
from PIL import Image
img = Image.open(img_path)
修改后的代码:
from PIL import Image, ImageOps
img = Image.open(img_path)
img = ImageOps.exif_transpose(img)
其它的参考链接
- python读取图片时自动旋转问题
- 这篇文章参考的链接:计算机视觉模型效果不佳,你可能是被相机的Exif信息坑了
- python 读取图像发生自动旋转的原因:手机或者相机拍摄照片后,传到电脑中,使用PIL读取时有时会发生旋转:查看两类图像的具体属性,发现仅有EXIF值有差异。EXIF代表了图像的方位信息,包含旋转0°、90°、180°和270°;
使用python读取图片的时候,常用的工具是PIL和opencv
需要注意的是图片自动旋转的问题
在正常读取图片的时候,并保存的情况下是不同的,具体方法可以参照以下方法,或者自行测试一下结果
step1:安装image_to_numpy
pip3 install image_to_numpy
step2:以后,你在自己的Python代码中加入这样几句即可
import matplotlib.pyplot as plt
import image_to_numpy
# Load your image file
img = image_to_numpy.load_image_file("my_file.jpg") # 加载进来的图像是numpy内容
# Show it on the screen (or whatever you want to do)
plt.imshow(img)
plt.show()