Ich versuche OpenCV 2.4.5 zu bekommen, um ein Schachbrettmuster von meiner Webcam zu erkennen. Ich konnte es nicht, dass die Arbeit bekommen, so habe ich beschlossen, zu versuchen, es zu bekommen arbeiten nur mit einem „perfekten“ Bild:findChessboardCorners schlägt fehl für die Kalibrierung Bild
aber es wird immer noch nicht funktioniert - patternFound jedes Mal false zurückgibt. Hat jemand eine Idee, 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);
}
}
das Schachbrett muss assymetric sein. Ich wiederhole, das Schachbrett muss assymetrisch sein. Sag mir, wie du sonst noch kalibrieren kannst. – CTZStef
@laurenelizabeth Deine Antwort brachte mich einen Schritt näher, aber ich habe anscheinend immer noch das gleiche Problem. Der Tipp von 7x7 statt 8x8 war mir sehr wichtig. Allerdings kann ich die Ecken fotografierter Schachbretter immer noch nicht erkennen, auch nicht auf nahezu perfekten Fotos. –
Wir versuchen mit asymmetrischen 9x7 Schachbrett, und wir fragen nach 8x6 (innere Quadrate). Es hat einfach sehr schnell funktioniert. Keine Probleme beim Erkennen. Und wir verwenden eine Doppelkamera, bei der wir nur dann in Betracht ziehen, wenn beide Kameras das Ding gleichzeitig erkennen. DANKE !!! – helios