Предположим, у меня есть двоичное изображение, и я хочу сделать следующее в OpenCV: учитывая точку, измерьте площадь и периметр подключенного компонента, который принадлежит точке.Периметр и зона OpenCV в подключенном компоненте
def areaAndPerimeter(point):
...do some stuff...
return area, perimeter
Я знаю, что могу использовать cv2.findContours()
, чтобы найти периметр и область каждого подключенного компонента, но я не знаю, как соединить эту информацию с входной точкой. Какой периметр и площадь соответствуют подключенному компоненту point
Я думаю, что вы делаете 'connectedComponentsWithStats()', и он накладывает все точки в каждом блобе с тем же цветом. Таким образом, вы найдете цвет (например, метку), соответствующий вашей точке, чтобы найти, к какому блобу он принадлежит. Возможно, я безнадежно ошибаюсь! Я полагаю, он называется 'bwlabel()' в Matlab. –
Да, я начал работать над решением, в котором я использую просто старые '' connectedComponents() '', а затем извлекаю каждый компонент 1 на 1 и запускаю '' findContours() '' отдельно для каждого, но кажется, что такой отход когда я мог запускать '' findContours() '' один раз на всем изображении и пропускать связанные компоненты вместе. – mv3