gpt4 book ai didi

c++ - opencv 中 findChessboardCorners() 的结果不一致

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

我正在使用 OpenCV 编写 C++ 代码,我正在尝试检测图像(从 .jpg 文件加载)上的棋盘以扭曲图像的视角。当 findChessboardCorners() 找到棋盘时,我的其余代码工作正常。但有时函数没有检测到模式,这种行为似乎是随机的。

例如,有一张图片可以在其原始分辨率 2560x1920 上使用,但如果我先使用 GIMP 将其缩小到 800x600 则不行。然而,另一个图像似乎做相反的事情:在原始分辨率下不起作用,但在缩小时起作用。

这是我执行检测的代码:

Mat grayimg = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
if (img.data == NULL) {
printf("Unable to read image");
return 0;
}
bool patternfound = findChessboardCorners(grayimg, patternsize, corners,
CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_FAST_CHECK);
if (!patternfound) {
printf("Chessboard not found");
return 0;
}

opencv 中是否存在某种错误导致此行为?有没有人对如何预处理您的图像有任何提示,以便该功能更一致地工作?

我已经尝试使用参数 CALIB_CB_ADAPTIVE_THRESH、CALIB_CB_NORMALIZE_IMAGE、CALIB_CB_FILTER_QUADS 和 CALIB_CB_FAST_CHECK。当我传入彩色图像时,我也得到了相同的结果。

提前致谢

编辑:我使用的是 OpenCV 2.4.1 版

最佳答案

我很难让 findChessboardCorners 工作,直到我在棋盘周围添加了一个白板。

我在最近的文档中的某个地方发现了这一点。

在添加边框之前,有时无法识别键盘,但有了白色边框,每次都能正常工作。

关于c++ - opencv 中 findChessboardCorners() 的结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11147721/

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