malloc:释放对象的校验和不正确 - 对象可能在被释放后被修改。的OpenCV

时间:2015-05-19 20:00:40

标签: c++ opencv

代码使用SVD估算2组点的平移和旋转矩阵。

vector<Point2f> ptOrigin(matchesNumber), ptTarget(matchesNumber);
Point2f ptCenterOrigin(0, 0), ptCenterTarget(0, 0);
Mat X(2, matchesNumber, CV_32F), Y(matchesNumber, 2, CV_32F);

for(int i = 0; i < matchesNumber; i++)
{
    X.at<double>(0, i) = ptOrigin[i].x - ptCenterOrigin.x;
    X.at<double>(1, i) = ptOrigin[i].y - ptCenterOrigin.y;
    Y.at<double>(i, 0) = ptTarget[i].x - ptCenterTarget.x;
    Y.at<double>(i, 1) = ptTarget[i].y - ptCenterTarget.y;
}
Mat S, w, u, vt;
S = X * Y;
SVD::compute(S, w, u, vt);

这一行有问题:S = X * Y;。错误消息是:malloc:***对象0x10105f3f8的错误:释放对象的校验和不正确 - 对象可能在被释放后被修改。

***在malloc_error_break中设置断点以进行调试。

我是OpenCV的新手,有人可以帮助我吗?谢谢

1 个答案:

答案 0 :(得分:1)

我不确定这是否是问题,但CV_32F应该使用float访问,而不是double。