Python 摄像机校准-无法检测棋盘
我正在使用openCV的函数检测棋盘,但没有检测到任何棋盘 我正在使用的图像: 找到的值始终等于0。有人能解释一下为什么吗Python 摄像机校准-无法检测棋盘,python,c++,opencv,camera-calibration,Python,C++,Opencv,Camera Calibration,我正在使用openCV的函数检测棋盘,但没有检测到任何棋盘 我正在使用的图像: 找到的值始终等于0。有人能解释一下为什么吗 const Size chessboardDimensions = Size(4,8); 在此表达式中,大小应为 Size(5,8) 因为你应该计算内格的角 编辑: 如注释中所述,int found应该是bool。因为函数返回是否找到角点 根据建议,在函数中添加快速检查选项,否则函数可能会工作迟缓: bool found = findChessboardCorners
const Size chessboardDimensions = Size(4,8);
在此表达式中,大小应为
Size(5,8)
因为你应该计算内格的角
编辑:
如注释中所述,int found
应该是bool
。因为函数返回是否找到角点
根据建议,在函数中添加快速检查选项,否则函数可能会工作迟缓:
bool found = findChessboardCorners(frame, chessboardDimensions, foundPoints, CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_NORMALIZE_IMAGE | CALIB_CB_FAST_CHECK);
最好检查是否所有点都正确找到。在某些情况下,无法检测到所有点,在进一步的应用中,这种情况会产生错误。因为这个函数的输出将是另一个函数的输入。因此,在循环中添加一个continue表达式:
if(found == 0 || foundPoints.size() != chessboardDimensions.area())
continue;
多么愚蠢的打字错误!我会在几分钟内接受你的回答。found应该是bool而不是int,它告诉你是否找到了模式(我认为它将返回找到的角点,即使返回false)。在您的情况下,大小是错误的,因此它找不到模式。@api55您好,我想在这里发表我的问题作为评论,因为我看到OP使用的图像与我使用的图像相同。由于我问题的主题非常具体,我感到震惊的是,它不会得到太多的关注。你知道我面临的问题吗?
if(found == 0 || foundPoints.size() != chessboardDimensions.area())
continue;