OpenCV 在 JPEG 图像和 EXIF 方向上的意外相机校准结果

Unexpected camera calibration results with OpenCV over JPEG images and EXIF orientation

我正在利用 OpenCV 来校准一组图像。我使用的是 OpenCV 提供的标准函数 cv::calibrateCamera,这里没什么特别的。图片为JPEG格式,并设置了EXIF Orientation flag(可以是!= 1)。

我注意到,如果图像并非全部为左上方向(方向 == 1),则校准结果是错误的,通常会导致非常高的 RMS 误差。相反,如果我手动更正方向(例如使用 mogrifyexiftool),结果符合预期。

你遇到过这种行为吗?你能解释一下为什么会这样吗?

附带说明一下,我在通过 Homebrew 安装的 Mac OSX El Capitan 上使用 OpenCV 3.1。代码在 C++ 中。

您使用的是 imread 还是 cvLoadImage? opencv 3.1 的 imread 似乎可以正确处理 exif,但 cvLoadImage 不能。请参阅以下 opencv 错误 https://github.com/opencv/opencv/issues/6673