#java #awt #graphics2d
#java #awt #graphics2d
Вопрос:
У меня есть BufferedImage
объекты изображения, которые имеют прозрачные пиксели. Что я хотел бы получить, так это Shape
или Area
объекты, которые заключают в себе прозрачную часть изображения.
Комментарии:
1. Один или несколько объектов? То, что вам нужно, — это выпуклая оболочка прозрачных пикселей. Если есть отдельные группы прозрачных пикселей, которые вы хотите изолировать, то решение будет другим.
2. @Rom1 Спасибо за указатель на выпуклую оболочку, было интересно прочитать об этом алгоритме. В моем случае может быть несколько групп прозрачных пикселей.
Ответ №1:
Вы могли бы попробовать это таким образом: обработать исходное изображение как неориентированный граф, узлами которого являются прозрачные пиксели. Поместите границу между соседними узлами на изображении (т. е. прозрачными пикселями, которые находятся непосредственно вверху, слева, справа, внизу и по диагонали). Найдите связанные компоненты для этого графика. Затем для каждого подключенного компонента вычислите его выпуклую оболочку. Возвращает a, List
содержащий каждую из этих оболочек, каждая оболочка является Shape
.