Преобразование координат из ROI в исходном изображении

У меня есть небольшая проблема с проекцией и геометрией. У меня есть изображение, где я обнаруживаю квадрат. После обнаружения квадрата я обрезаю квадрат по изображению. В области интереса я определяю точку P (x, y) (см. Изображение ниже).

введите описание изображения здесь

Моя проблема в том, что я знаю координату точки P в области интереса, координаты A, B, C, D и поворот области интереса (RotatedRect :: angle), но я хочу получить координату точки P в исходном изображении. Любой совет может помочь.

Для урожая ROI у меня есть этот код

vector< RotatedRect > rect(squares.size());

for (int i=0;i<squares.size();i++)
{
rect[i] = minAreaRect(Mat(squares[i]));
Mat M,rotated,cropped;
float angle = rect[i].angle;
Size rect_size = rect[i].size;

if (rect[i].angle<-45)
{
angle += 90;
swap(rect_size.width,rect_size.height);
}

M = getRotationMatrix2D(rect[i].center,angle,1.0);
warpAffine(cameraFeed,rotated,M,cameraFeed.size(),INTER_CUBIC);
getRectSubPix(rotated,rect_size,rect[i].center,cropped);
cropped.copyTo(SatelliteClass[i].m_matROIcropped);
SatelliteClass[i].m_vecRect = rect[i];
}

2

Решение

Это в основном вопрос сложения векторов. Возьмите инверсию M, примените ее к P (чтобы вы поворачивали P обратно к исходному кадру), а затем добавьте P в левый угол прямоугольника.

Может быть способ сделать это в API, который вы используете, вместо изобретения колеса.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector