Нахождение прямоугольника и его углов на изображении

Собираю станок для размещения SMD элементов. Я почти закончил, но у меня есть одна проблема.

Элементы, которые я размещаю, должны быть размещены в определенной ориентации. Я хочу показать выбранный элемент камере снизу, чтобы моя программа могла найти его углы и определить, на сколько градусов он повернут. Исходя из этого, моя программа должна корректировать поворот, чтобы элемент располагался правильно.

Все мои попытки определить угол не увенчались успехом. У тебя есть идеи ?

Примеры:

Вот две упрощенные иллюстрации неправильно ориентированных элементов, как их может увидеть камера:

Неправильно повернутый элементЕще один неправильно повернутый элемент

Я хочу получить угол, на который мне нужно повернуть элемент, чтобы получить правильную ориентацию, как показано ниже:

Правильно ориентированный элемент


person Dominik Chat    schedule 30.11.2014    source источник
comment
Добавил снизу 2 идеологических образа smd.   -  person Dominik Chat    schedule 30.11.2014
comment
Я хочу получить угол, который мне нужно повернуть, чтобы привести его в мое идеальное состояние, как здесь imgur.com/6ID4pXf   -  person Dominik Chat    schedule 30.11.2014
comment
Что-то вроде stackoverflow.com/q/13002979/960757?   -  person TLama    schedule 30.11.2014
comment
Но в паскале или делфи 7   -  person Dominik Chat    schedule 30.11.2014
comment
Все мои попытки [...] провалились. Покажите нам эти попытки.   -  person Thijs van Dien    schedule 30.11.2014


Ответы (2)


Если ваши прямоугольники хорошо определены, как показано на рисунках, вы можете использовать преобразование Хафа для определения параметров линий. (ребра прямоугольника) и определите положение и ориентацию прямоугольника.

person MBo    schedule 30.11.2014

используйте OpenCv findcontours -> получить RotatedRect -> affinetransform

https://github.com/Laex/Delphi-OpenCV

person Birol Kuyumcu    schedule 01.12.2014