我正在使用Opencv开发LK光流方法 . 当我试图执行我的代码时,我收到以下错误 .
断言失败(ncorners> = 0 && corners.depth()== CV_32F)在cornerSubPix中,文件/tmp/buildd/ros-hydro-opencv2-2.4.9-2precise-20140819-1745/modules/imgproc/src/cornersubpix .cpp,第257行终止在抛出'cv :: Exception'的实例后调用what():/ tmp / buildd / os-hydro-opencv2-2.4.9-2precise-20140819-1745/modules/imgproc/src/cornersubpix .cpp:257:错误:(-215)ncorners> = 0 && corners.depth()== CV_32F函数cornerSubPix
这是我的代码的一部分
vector<Point2f> cornersA;
cornersA.reserve(maxCorners);
vector<Point2f> cornersB;
cornersB.reserve(maxCorners);
goodFeaturesToTrack( imgA,cornersA,maxCorners,qualityLevel,minDistance,cv::Mat(),blockSize,0,k);
cornerSubPix( imgA, cornersA, Size( win_size, win_size ), Size( -1, -1 ),
TermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.03 ) );
// Call Lucas Kanade algorithm
我在互联网上查看了我收到的错误 . 它主要是因为定义了Point2d而不是Point2f . 我找不到更多的东西 . 我是这个地区的新手 . 如果你们能帮助我解决这个问题,那将是非常感激的 . 谢谢..
2 回答
我在Android / Java版OpenCV上遇到了同样的错误 . 我甚至抛弃了ncorners的 Value 来检查它,它似乎没问题 .
当我在OLD图像上运行goodFeaturesToTrack和cornerSubPix并在新图像上运行它们时,它终于消失了 .
所以也许试试吧
或者你称之为新形象的任何东西 . 如果有人能够解释为什么会发生这种情况,我很想知道 .
刚刚得到同样的错误 . 看
cornerSubPix()
源代码:所以,这只有两个可能的原因 .
_corners
不是合适的类型 ._corners.checkVector(2)
返回否定 - >检查是否有空_corners
数组(这是我的情况) .