findChessboardCorners falha na imagem de calibração
Estou tentando fazer com que o OpenCV 2.4.5 reconheça um padrão de xadrez da minha webcam. Eu não consegui fazer isso funcionar, então decidi tentar fazê-lo funcionar usando apenas uma imagem "perfeita":
mas ainda não funciona - o patternFound retorna falso toda vez. Alguém tem alguma idéia do que estou fazendo de errado?
#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);
}
}