我正在学习 OpenCV 来校准和校正相机。相机已经校准,现在我正在使用 cvRemap(src, dst, mapx, mapy) 来消除左右相机拍摄的两个图像的失真。
每次程序运行到包含 cvRemap() 的行时,它都会抛出一个未处理的异常,称为:
testagain.exe 中 0x757dc41f 处未处理的异常:Microsoft C++ 异常:内存位置 0x003fe73c 处的 cv::Exception。
控制台说:
OpenCV 错误:断言失败 (src.type() == dst.type() && dst.size() == mapx.size()) 在未知函数中,文件 ..\ ..\ ..\src\opencv\模块\imgproc\src\imgwarp.cpp,第 3294 行
我是根据Learning OpenCV做到的。注意 cvRemap 的格式是:cvRemap(const CvMat* src, const CvMat* dst, const CvMat* mapx, const CvMat* mapy)
. 这里有一些猜测:
由于mapx和mapy是另外一个程序生成的,自己读入的,有一些负值,也有一些大于图片分辨率(640*480)的值,我手动处理了这些值,设置回分辨率范围. 我希望这不会是一个问题。
本次试用之前,我是通过 计算mapx和mapy
cvInitUndistortRectifyMap()
,调用cvRemap时也不例外。我不知道为什么。