OpenCV立体声校准矩阵错误

时间:2015-11-09 22:32:24

标签: c++ opencv camera camera-calibration stereoscopy

我尝试使用OpenCV 2.4.9校准立体相机,当我拨打stereoCalibrate时,我遇到了错误。

以下是我正在使用的图片。 (有些奇怪的着色故障由MS Paint提供)。顶部的三个图像来自左侧摄像头,而底部的三个图像来自右侧摄像头。请注意,我已经使用了更多的图像对,图像实际上不是很小,它们是640x480;但是,我缩小了它们并省略了一些,所以这篇文章的长度不是935837英里。

示例输入图像: Example Calibration Images.png

OpenCV发现棋盘角落很好。我使用drawChessboardCorners显示它们,它们看起来正确。所以这不是问题所在。

然后我使用calibrateCamera分别校准每个相机。我使用undistort使用矩阵显示通过calibrateCamera传递的图像,结果似乎过度纠正镜头失真。

根据calibrateCamera的输出未扭曲: Undistorted based on output of calibrateCamera

如果我省略calibrateCamera步骤并相应地调整stereoCalibrate的标记(将CV_CALIB_FIX_INTRINSIC标记替换为CV_CALIB_SAME_FOCAL_LENGTH | CV_CALIB_ZERO_TANGENT_DIST

,则会出现同样的错误

接下来我致电stereoCalibrate,我收到此错误:

OpenCV Error: Assertion failed (dims == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0))
in create, file c:/Users/s-foxk/Documents/libs/opencv/sources/modules/core/src/matrix.cpp, line 1564

...Generic Widnows Garbage...

terminate called after throwing an instance of 'cv::Exception'
what():  c:/Users/s-foxk/Documents/libs/opencv/sources/modules/core/src/matrix.cpp:1564:
error: (-215) dims == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0) in function create

在过去的几个小时里,我一直在寻找这个问题的解决方案,以及有关此错误的信息,以及更改我的代码的一些内容。不幸的是,所有人都无济于事。似乎很少有关于此错误的信息,或者可能只是这种情况。

这个错误是什么意思?我怎么能摆脱它?在我看来,考虑到相机的640x480分辨率,棋盘可能距离太远。这可能是问题吗?

如果有人希望看到我的部分或全部代码,我会很乐意为它创建一个pastebin,但我不愿意将它转储到这里,因为它很长很难看。

0 个答案:

没有答案