Доброго времени суток.
Есть задача - распознать QR-код. Делать я это решил с помощью openCV.
Алгоритм примерно такой. Беру картинку, перевожу в монохромное, потом в бинарное (cvadaptivethreshold).
Далее ищу контуры. Не хитрыми действиями определяю координаты мишеней (те три квадратика).
Определяю площадь самого кода.
Потом "нарезаю" на 9 одинаковых частей (три из них - мишени).
Каждую часть нарезаю на квадратики, и обходя их попиксельно, определяю цвет (черный\белый).
Все нормально работает, если на вход поступает QR-код без искажений (как на картинке).
Но все ломается, если я хочу принимать картинку с камеры телефона. Из-за искажений я, даже с трудом могу нарезать на 9 частей, не говоря уж о том, чтобы правильно определить цвет квадратиков (мне просто не получается определить точные координаты и размеры, поскольку даже в рамках не большей области их размеры меняются).
Может у кого0нибудь есть мысли как корректно решить эту задачу?