gpt4 book ai didi

python - 相机校准 - 无法检测棋盘

转载 作者:搜寻专家 更新时间:2023-10-31 00:54:09 24 4
gpt4 key购买 nike

我正在使用 openCV 的功能来检测棋盘,但没有检测到棋盘。

我使用的图片:

enter image description here

const Size chessboardDimensions = Size(4,8);
int main (int argv, char ** argc)
{
frame = imread("/home/Georges/Desktop/a.jpg");
cvtColor(frame, frame, CV_BGR2GRAY);
int found = findChessboardCorners(frame, chessboardDimensions, foundPoints, CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_NORMALIZE_IMAGE);

}

found 总是等于 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;

关于python - 相机校准 - 无法检测棋盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46235985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com