У меня есть прямоугольник:Преобразование списка точек в ограничительной рамке в Matlab
bbox = [10 20 50 60];
Я преобразовать прямоугольник в список точек с помощью:
points = bbox2points(bbox);
я затем применить вращение к точкам с использованием affine2d и transformPointsForward. Теперь у меня есть мои измененные точки, как я могу преобразовать их обратно в ограничительную рамку? Есть ли встроенная функция, эквивалентная «points2bbox»? Благодарю.
В общем, вы не можете. Исходный ограничивающий прямоугольник был выровнен по оси. Твоих преобразованных точек не может быть. В этом случае они не могут быть описаны x, y, w, h; вам также нужен угол поворота. Ответ на этот вопрос будет зависеть от того, знаете ли вы, что есть поворот или нет. – kmac
Угол поворота известен во всех случаях. Вопрос также может быть поставлен другим способом: у меня есть изображение, небольшая часть которого окружена ограничивающей рамкой. Я поворачиваю изображение x градусов. Как я могу также поворачивать ограничивающий прямоугольник с помощью * одинакового * угла, сохраняя при этом ограничивающий прямоугольник? Спасибо за вашу помощь! –
Является ли трансформация на самом деле аффинной? Сдвиг не оставит вас с прямоугольником. Если это просто перевод и вращение (жесткое), не беспокойтесь о преобразовании в точки и применении преобразования. Просто добавьте компонент перевода в (x, y) вашего ограничивающего прямоугольника и запишите угол поворота. Теперь у вас есть (x, y, w, h, theta) представление ограничивающей рамки. – kmac