【发布时间】:2014-10-28 07:34:23
【问题描述】:
我从无法拍摄棋盘图片并使用 OpenCV 计算校正矩阵的相机获取图像。到目前为止,我使用 imagemagick convert 和选项 '-distort Barrel "0.0 0.0 -0.035 1.1"' 校正了图像,在那里我通过反复试验获得了参数。
现在我想在 OpenCV 中执行此操作,但我在网上找到的只是使用棋盘图像的自动校正。是否有机会像使用 imagemagick 一样应用一些简单的手动试错镜头畸变校正?
【问题讨论】:
-
在使用棋盘的样本中,他们应该在任何地方计算失真参数。只需跳过计算并明确提供这些参数。如果该部分被封装,您可以查看 oprnCV 源代码并使用内部使用的函数
-
我尝试自己定义棋盘角(例如 4x4 点),但没有得到角数组的结构应该是什么。有人知道吗?
-
好的,我认为尽可能小的数组应该这样配置:corners = np.zeros((4*4,1,2),dtype="float32")。使用 3x3 似乎不起作用。不过,我更喜欢 convert -distort Barrel 之类的东西,而不是现在定义扭曲点。
-
你试过 initUndistortRectifyMap(InputArray cameraMatrix, InputArray distCoeffs, InputArray R, InputArray newCameraMatrix, Size size, int m1type, OutputArray map1, OutputArray map2) 吗?它不使用任何棋盘,只使用失真系数......
-
嗯......现在我发现它不是用一个扭曲的棋盘完成的,因为需要大约 10 个不同的扭曲图像来应用 cv2.calibrateCamera :-( 所以我尝试 cv2.initUndistortRectifyMap。
标签: opencv imagemagick distortion