Функция OpenCV findChessboardCorners не работает в (по-видимому) простом сценарии
Я пытаюсь найти углы шахматной доски, используя OpenCV.
Изображение, которое я использую, содержит две шахматные доски, но меня интересует только субрегион одного из них. На следующем изображении показано исходное изображение.
Используя GIMP, я выбрал интересующую область и установил для всех остальных пикселей значение по умолчанию.
Я на самом деле не обрезал изображение, потому что я уже откалибровал камеру, используя этот размер изображения, и я не хотел его менять. Операция должна быть эквивалентна изменению значений в матрице изображения, но я предпочел сделать это с GIMP. Это однократный эксперимент, и быстрее выполнить эту операцию с помощью графического инструмента вместо использования кода.
Полученное изображение содержит шахматную доску с углами 24х5, но функция findChessboardCorners не может ничего найти.
Вот код Python, который я использую:
>>> img = cv2.imread('C:\\Path\\To\\C4-Cropped.png', 0)
>>> cv2.findChessboardCorners(img, (24, 5))
(False, None)
>>> cv2.findChessboardCorners(img, (5, 24))
(False, None)
Я также пытался установить адаптивный порог, но он все еще не работает
>>> cv2.findChessboardCorners(img, (24, 5), flags=cv2.cv.CV_CALIB_CB_ADAPTIVE_THRESH)
(False, None)
Это кажется действительно странным. Я использовал эту функцию OpenCV много раз в прошлом, и она всегда работала, даже с изображениями, которые выглядели намного болеесложный чем этот. Освещение области не является однородным, но функция должна быть достаточно устойчивой, чтобы справиться с этим.
Есть ли проблемы сискусственный изображение создано с помощью GIMP? Как я могу найти углы?
Любое предложение будет с благодарностью.