Сценарий выглядит так: у меня есть фотография бумаги, которую я хотел бы сделать с помощью OCR. Поэтому возьмите изображение ниже в качестве моего входного примера:
После успешного определения области, которая соответствует бумаге, у меня остались vector<Point>
из 4 координат, которые определяют его местоположение внутри изображения. Обратите внимание, что эти координаты, вероятно, не будут соответствовать идеальному прямоугольнику из-за расстояния камеры и угла, когда был сделан снимок. В целях просмотра я соединил точки на подизображении, чтобы вы могли видеть, что я имею в виду:
В этом случае точки: [1215, 43], [52, 67], [56, 869] и [1216, 884]
В данный момент мне нужно настроить эти точки так, чтобы они были выровнены по горизонтали. Что я имею в виду под этим? Если вы заметили область подизображения выше, она немного повернута: точки на правой стороне изображения расположены немного выше точек на другой стороне.
Другими словами, у нас есть изображение A , которое было специально преувеличено, чтобы выглядеть немного более искаженным / повернутым, чем реальность, а затем изображение B - это то, что я хотел бы вроде как конечный результат этой процедуры:
A) B)
Я не уверен, , какие техники можно было бы использовать для достижения этой трансформации. Приложение также должно автоматически определять , сколько нужно сделать вращения, поскольку я не могу контролировать процедуру получения изображения.
Цель состоит в том, чтобы получить новый Mat
с подизображением нормализованного . Я не беспокоюсь о возможном искажении изображения прямо сейчас, я просто ищу способ определить, сколько вращения нужно сделать на подизображении и как его применить и получить более прямоугольную область .