网上说的什么因为多线程调用
额的貌似跟那个毫不相关
最后发现是
points1 = cvCreateMat(2,numPoints,CV_32FC1);
points2 = cvCreateMat(2,numPoints,CV_32FC1);
cvZero(points1);
cvZero(points2);
matchingslist::iterator ptr = matchings.begin();
for(int i=0;i<numPoints;ptr++,i++)
{
cvmSet(points1,1,i,ptr->first.x);
cvmSet(points1,2,i,ptr->first.y);//这里的行标超出范围了,只能0和1
cvmSet(points2,1,i,ptr->second.x);
cvmSet(points2,2,i,ptr->second.y);//这里的行标超出范围了
}