findChessboardCorners schlägt für das Kalibrierungsbild fehl

Ich versuche, OpenCV 2.4.5 dazu zu bringen, ein Schachbrettmuster von meiner Webcam zu erkennen. Ich konnte das nicht zum Laufen bringen, also habe ich beschlossen, es mit einem "perfekten" Bild zum Laufen zu bringen:

aber es wird immer noch nicht funktionieren - patternFound gibt jedes Mal false zurück. Hat jemand eine Ahnung, was ich falsch mache?

#include <stdio.h>

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

using namespace cv;
using namespace std;

int main(){
    Size patternsize(8,8); //number of centers
    Mat frame = imread("perfect.png"); //source image
    vector<Point2f> centers; //this will be filled by the detected centers

    bool patternfound = findChessboardCorners(frame,patternsize,centers);

    cout<<patternfound<<endl;
    drawChessboardCorners(frame, patternsize, Mat(centers), patternfound);

    cvNamedWindow("window");
    while(1){
        imshow("window",frame);
        cvWaitKey(33);
    }
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage