У меня есть перспективное изображение клавиатуры пианино с левой стороны, например:
Я вручную обрисовываю четыре угла клавиатуры и передал его в функцию openCV getPerspectiveTransform, чтобы получить представление клавиатуры над головой. В результате получается следующее:
вид сверху
Я обнаружил, что если я не обведу 4 угла клавиатуры точно, то края белые клавиши на выходе преобразования перспективы не будут точно вертикальными.
Тогда я хочу составить схему всех белых клавиш. Поскольку белые клавиши пианино расположены равномерно, я просто разделил изображение вида сверху на 33 части по горизонтали. Затем я масштабировал нижние края контура по отношению длины нижней стороны к верхней стороне клавиатуры в исходном изображении. Я получил этот вывод.
Однако контуры белых клавиш не совпадают с краями белых клавиш.
Как мне воспользоваться тем, что все белые клавиши равномерно распределены по сегментам белых клавиш пианино, даже если края белых клавиш не идеально вертикальны?
* I не нужно использовать алгоритм обнаружения краев для сегментирования белых клавиш, так как иногда в определенных условиях освещения края не видны.