我正在使用Python中的OpenCV(cv2)对格式为jpg、png和jpeg、JPG的图像进行处理。我正在做一个测试,使用“cv2.imread”读取图像后立即使用“cv2.imwrite”将其写入磁盘。我发现一些图像的部分会旋转,有些旋转90度,有些旋转180度。但大多数图像保持正确的方向。我无法得出导致这种旋转的模式结论。有人知道更多细节吗?谢谢!
我正在使用Python中的OpenCV(cv2)对格式为jpg、png和jpeg、JPG的图像进行处理。我正在做一个测试,使用“cv2.imread”读取图像后立即使用“cv2.imwrite”将其写入磁盘。我发现一些图像的部分会旋转,有些旋转90度,有些旋转180度。但大多数图像保持正确的方向。我无法得出导致这种旋转的模式结论。有人知道更多细节吗?谢谢!
一种可能的解决方案是在使用imdecode
加载图像时将cv2.IMREAD_UNCHANGED
更改为cv2.IMREAD_COLOR
。由于某些原因,“unchanged”无法正确读取EXIF元数据。
当使用cv2.VideoCapture()读取视频文件并使用cv2.imwrite()保存帧图像时,我遇到了类似的问题。这是因为OpenCV没有正确读取视频方向/旋转元数据导致的。即使在OpenCV 4中,这对我仍然是一个问题。
最后,我使用了scikit-video - 这是一个围绕ffmpeg的Python封装。再也没有旋转问题:http://www.scikit-video.org/stable/io.html