我尝试使用OpenCV 2.4.9校准立体相机,当我拨打stereoCalibrate
时,我遇到了错误。
以下是我正在使用的图片。 (有些奇怪的着色故障由MS Paint提供)。顶部的三个图像来自左侧摄像头,而底部的三个图像来自右侧摄像头。请注意,我已经使用了更多的图像对,图像实际上不是很小,它们是640x480;但是,我缩小了它们并省略了一些,所以这篇文章的长度不是935837英里。
OpenCV发现棋盘角落很好。我使用drawChessboardCorners
显示它们,它们看起来正确。所以这不是问题所在。
然后我使用calibrateCamera
分别校准每个相机。我使用undistort
使用矩阵显示通过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,但我不愿意将它转储到这里,因为它很长很难看。