使用OpenCV检测小棋盘图案

时间:2017-03-29 04:00:41

标签: c++ opencv

我目前正在开展一个项目,我需要识别这样的棋盘图案:

https://preview.ibb.co/g7Dnka/cow.jpg

我搜索了一些可以执行此操作的代码并找到了OpenCV函数findChessboardCorners。我可以用一些图像成功测试它。这是C ++中的代码:

#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\calib3d\calib3d.hpp>

#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    // read the file
    Mat image = imread("cow.jpg", IMREAD_COLOR);

    // check for valid image
    if (!image.data)
    {
        cout << "Could not open or find the image" << std::endl;
        return -1;
    }

    // grid size (cols, rows)
    Size size(7, 7);

    // store detected centers
    vector <Point2f> centers;

    bool sucess = findChessboardCorners(image, size, centers);

    cout << "find: " << sucess;

    // draw the chessboard
    drawChessboardCorners(image, size, Mat(centers), sucess);

    // display the result
    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", image);

    waitKey(0);
    return 0;
}

我的问题是它只接受高度和宽度大于2的棋盘(仅计算内角),但我使用8 x 2尺寸。

有没有办法绕过它甚至编写我自己的功能?谢谢你的帮助。

0 个答案:

没有答案