Funkcja OpenCV findChessboardCorners nie działa w (najwyraźniej) prostym scenariuszu
Próbuję znaleźć rogi szachownicy przy użyciu OpenCV.
Obraz, którego używam, zawiera dwie szachownice, ale interesuje mnie tylko podregion jednego z nich. Poniższy obraz przedstawia oryginalny obraz.
Używając GIMP, wybrałem obszar zainteresowania i ustawiłem drugi piksel na wartość domyślną.
Właściwie nie przyciąłem obrazu, ponieważ skalibrowałem aparat przy użyciu tego rozmiaru obrazu i nie chciałem go zmieniać. Operacja powinna być równoważna zmianie wartości w matrycy obrazu, ale wolałem to zrobić za pomocą GIMP. Jest to eksperyment jednorazowy i szybsze jest wykonanie tej operacji za pomocą narzędzia graficznego zamiast używania kodu.
Wynikowy obraz zawiera szachownicę z rogami 24x5, ale funkcja findChessboardCorners nie jest w stanie niczego znaleźć.
Oto kod Pythona, którego używam:
>>> img = cv2.imread('C:\\Path\\To\\C4-Cropped.png', 0)
>>> cv2.findChessboardCorners(img, (24, 5))
(False, None)
>>> cv2.findChessboardCorners(img, (5, 24))
(False, None)
Próbowałem także ustawić próg adaptacyjny, ale nadal nie działa
>>> cv2.findChessboardCorners(img, (24, 5), flags=cv2.cv.CV_CALIB_CB_ADAPTIVE_THRESH)
(False, None)
To wydaje się naprawdę dziwne. Korzystałem z tej funkcji OpenCV wiele razy w przeszłości i zawsze działała, nawet w przypadku obrazów, które wyglądały znacznie bardziejskomplikowane niż ten. Oświetlenie obszaru nie jest jednorodne, ale funkcja powinna być wystarczająco mocna, aby sobie z tym poradzić.
Czy jest jakiś problem zsztuczny obraz utworzony ad hoc za pomocą GIMP? Jak mogę znaleźć rogi?
Wszelkie sugestie byłyby bardzo mile widziane.