【问题标题】:Inconsistent outcome of findChessboardCorners() in opencvopencv中findChessboardCorners()的结果不一致
【发布时间】:2012-06-21 22:27:31
【问题描述】:

我正在使用 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 版

【问题讨论】:

    标签: c++ image-processing opencv


    【解决方案1】:

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

    我在最近的文档中发现了这一点。

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

    【讨论】:

      【解决方案2】:

      欢迎享受真实世界计算机视觉的乐趣 :-)

      您没有发布任何图像,并且 findChessboardCorners 有点太高级而无法调试。我建议在图像顶部显示(以八度音程、matlab 或更多 OpenCV 代码)检测到的角的位置,以查看是否检测到足够的角。如果没有,请尝试在图像上自行运行 cvCornerHarris。

      有时问题的原因是图像颗粒过多:尝试模糊一点,看看是否有帮助。

      【讨论】:

        【解决方案3】:

        其实,试着去掉 CALIB_CB_FAST_CHECK 选项,试试看。

        【讨论】:

          【解决方案4】:

          CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_FAST_CHECK 与 CALIB_CB_ADAPTIVE_THRESH 不同 | CALIB_CB_FAST_CHECK,你应该使用 | (二进制或)

          【讨论】:

          • 它们在什么意义上不一样?他们不会都导致int 的值为9
          • 否,二进制或与 + 运算符不同,请检查 c 运算符基础...例如2(二进制 10)+2(二进制 10)是 4(二进制 100),但是 2 | 2 将是 2(二进制 10)...
          • 对,您指的是一般意义上的+|。我指的是这种特殊情况,其中标志是1,2,4,8,在这种情况下它们给出相同的结果。无论如何,我认为您的建议很好,使用| 也可以更清楚地表明我们正在组合标志。
          猜你喜欢
          • 1970-01-01
          • 2015-10-05
          • 1970-01-01
          • 1970-01-01
          • 2020-03-13
          • 2013-10-11
          • 2014-09-21
          • 2012-11-04
          • 2015-10-26
          相关资源
          最近更新 更多