C++ OpenCV over JPEG图像和EXIF方向的意外相机校准结果

C++ OpenCV over JPEG图像和EXIF方向的意外相机校准结果,c++,opencv,jpeg,exif,camera-calibration,C++,Opencv,Jpeg,Exif,Camera Calibration,我正在利用OpenCV校准一组图像。我使用的是OpenCV提供的标准函数cv::calibrateCamera,这里没有什么特别之处。图像为JPEG格式,并且设置了EXIF方向标志(可以是!=1) 我注意到,如果图像并非都是左上方向(方向==1),则校准结果是错误的,通常会导致非常高的RMS误差。相反,如果我手动更正方向(例如使用mogrify或exiftool),结果与预期一致 你有没有遇到过这种行为?你能解释一下为什么会这样吗 作为旁注,我在MacOSX El Capitan上使用OpenC

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

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

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


作为旁注,我在MacOSX El Capitan上使用OpenCV 3.1,通过自制安装。代码是C++的。< /p> < p>你使用的是iMead还是CvoLaDimaGe?opencv 3.1的imread似乎能正确处理exif,但cvLoadImage不能。查看以下opencv错误

您使用的是imread还是cvLoadImage?opencv 3.1的imread似乎能正确处理exif,但cvLoadImage不能。查看以下opencv错误

实际上,我正在使用
imread
。尽管如此,我仍然不明白为什么图像方向会影响校准。你所有的图像都是相同的方向吗?作为复选框,在找到每个图像上的棋盘格角点并将角点写入图像后,保存每个图像的副本。将图像另存为png,这样就可以放弃旋转信息,这可能会显示出一些问题它们的方向肯定不相同。这将如何影响校准?我只是将一组点坐标传递给校准例程,而不是图像本身。尽管如此,由于我认为我的问题不会得到答案,我将选择你的答案作为最佳(也是唯一)答案。谢谢你的时间。实际上,我正在使用
imread
。尽管如此,我仍然不明白为什么图像方向会影响校准。你所有的图像都是相同的方向吗?作为复选框,在找到每个图像上的棋盘格角点并将角点写入图像后,保存每个图像的副本。将图像另存为png,这样就可以放弃旋转信息,这可能会显示出一些问题它们的方向肯定不相同。这将如何影响校准?我只是将一组点坐标传递给校准例程,而不是图像本身。尽管如此,由于我认为我的问题不会得到答案,我将选择你的答案作为最佳(也是唯一)答案。谢谢你抽出时间。