Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 摄像机校准-无法检测棋盘_Python_C++_Opencv_Camera Calibration - Fatal编程技术网

Python 摄像机校准-无法检测棋盘

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

我正在使用openCV的函数检测棋盘,但没有检测到任何棋盘

我正在使用的图像:

找到的值始终等于0。有人能解释一下为什么吗

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;