Я работаю с ИК-камерой и пытаюсь выяснить, нет ли у нас искажения объектива. Я использую пример из OpenCV здесь для руководства моей работой. Я использовал шаблон шахматной доски из здесь и прикрепил его к обратной стороне книги. Прежде чем делать какие-либо снимки, я нагрел книгу / бумагу и заметил, что рисунок шахматной доски очень четкий.
Я взял ~ 50 неподвижных кадров с наклоненным / перемещенным шахматным рисунком, чтобы каждая часть кадра содержала некоторую часть рисунка. Пример одного из моих изображений ниже:
![example calibration image](https://i.stack.imgur.com/JRpBY.png)
Я использовал следующий код, который привел к False для каждого изображения. Я попробовал каждую комбинацию размеров сетки из (5-9, 5-9).
import numpy as np
import cv2
import glob2 as glob
import matplotlib.pyplot as plt
base = 'pathtoimages/'
files = glob.glob(base + '*.png')
for file in files:
img = cv2.imread(file)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, corners = cv2.findChessboardCorners(gray, (6,8), None)
print (ret)
Я не могу понять, почему алгоритм не находит углы. Есть идеи?
Изменить 30 мая 2019:
Сегодня я сделал еще несколько снимков с помощью камеры. Я сделал фотографии в более контролируемой среде без каких-либо внешних источников света. Эти новые изображения все еще не в состоянии обнаружить угол доски поиска. Я попытался увеличить контраст и яркость, используя cv2.convertScaleAbs, чтобы получить следующее изображение в качестве примера.
![Increased Contrast](https://i.stack.imgur.com/CfD4u.png)
Это также не помогает. Если я использую cv2.goodFeaturesToTrack для поиска углов, я получаю следующий результат:
![corners](https://i.stack.imgur.com/wWu3L.png)
Похоже, алгоритм определения углов Opencv активно избегает моих углов шахматной доски. Он найдет любой угол, который сможет, прежде чем найти его на шахматной доске. Я действительно озадачен здесь.
В качестве проверки работоспособности я убедился, что openCV может найти углы на оригинальной шахматной доске, которую я использую, и она отлично работала.
Есть идеи?
Изменить 4 июня 2019 г .:
В итоге я написал скрипт, который позволяет мне вручную назначать каждый из углов. Мне удалось успешно получить модель искажения камеры. У меня все еще нет решения, почему углы не могут быть автоматически найдены openCV. Я думаю, что если бы я сделал это снова в ИК, я бы создал собственную сетку, которая увеличивает контраст между ячейками сетки просто из-за различий в тепловых свойствах между «белыми» и «черными» ячейками сетки (используйте разные материалы).