我举了本书中校准相机和不失真图像的代码示例:shop.oreilly.com/product/9780596516130.do
据我了解,OpenCV 的常用相机校准方法非常适用于“普通”相机。当涉及到鱼眼镜头时,虽然我们必须使用 8 个校准参数而不是 5 个向量以及CV_CALIB_RATIONAL_MODEL
方法中的标志cvCalibrateCamera2
。至少,这就是它在OpenCV 纪录片中所说的
因此,当我在这样的图像数组上使用它时(来自 OCamCalib 的示例图像),我使用以下结果得到以下结果cvInitUndistortMap
:abload.de/img/rastere4u2w.jpg
由于生成的图像是从整个未失真的图像中剪切出来的,所以我继续使用cvInitUndistortRectifyMap
(就像这里描述的那样stackoverflow.com/questions/8837478/opencv-cvremap-cropping-image)。所以我得到了以下结果:abload.de/img/rasterxisps.jpg
现在我的问题是:为什么整个图像没有失真?在我后来结果的一些照片中,您可以识别出例如笔记本电脑仍然完全失真。如何使用标准 OpenCV 方法获得更好的结果?
我是 stackoverflow 的新手,我也是 OpenCV 的新手,所以在表达我的问题时,请原谅我的任何缺点。