У меня есть ситуации, что у меня есть небольшой двоичный файл, который имеет один форму, вокруг которой я хочу, чтобы найти наиболее подходящую повернутый прямоугольник (не ограничивающий прямоугольник). Я знаю, что есть cv :: minAreaRect(), которые вы применяете к результату, найденному по cv :: findContours(), но это принесло плохие результаты в моем случае, потому что данные шумные (от MS Kinect , см. пример изображения , где изменение поворота связано с тем, что входные данные (контур) немного отличаются). Вместо этого я должен был вычислить основную ось с помощью PCA на моем двоичном изображении (которое менее чувствительно к шуму), что дает угол «a», и теперь я хочу создать RotatedRect
вокруг моей формы, учитывая угол принципа ось, a).OpenCV RotatedRect с заданным углом
У меня есть иллюстрация, выполненная с использованием моих превосходных навыков рисования!
Итак, тогда мой вопрос: у вас, парни, есть фрагменты кода или конкретные предложения по его устранению? Я боюсь, что мне нужно сделать много итераций Брешенэма, надеясь, что есть разумный подход.
Btw, для тех, кто не слишком хорошо знаком с структурой данных RotatedRect openCV: определяется высотой, шириной, углом и центральной точкой, считая, что центральная точка на самом деле, ну, в центре прямоугольника ,
Приветствия!
Не могли бы вы повернуть фигуру на a, а затем поместить прямоугольник? –
Вращение не является вариантом. Нельзя предположить, что форма находится в самом центре изображения. Он также может находиться в левом нижнем углу. Моя текущая идея решения этой проблемы - сделать <ширину изображения> обходов Bresenham, возможно, достаточно интеллектуальных, чтобы не сканировать те области, которые я уже знаю, были отсканированы, пытаясь максимизировать ширину и высоту вращающегося прямоугольника. – NameZero912
Что значит «это принесло плохие результаты»? Можете ли вы поделиться образцом, с которым работаете? – fireant