Обрезка фото по контуру: Ещё один онлайн сервис вырезки фотографии по контуру — Дидактор

Обрезка фотографий в Inkscape — OpenArts

Inkscape — это векторный графический редактор, то есть для редактирования фотографий его обычно не используют. Между тем, в Inkscape есть некоторые интересные инструменты обработки растровых изображений, которые вполне заслуживают внимания.

Простая обрезка фотографий в Inkscape

1

Для начала, нам нужно проимпортировать фотографию в Inkscape. Как всем наверняка известно, Inkscape вполне умеет импортировать в текущий документ растровые изображения и работать с ними наряду с векторными объектами. Вы можете просто перетащить файл изображения с исходной папки в окно Inkscape, либо же выбрать в меню File → Import. После этого появится окошко с дополнительными опциями, в котором вы можете, например, выбрать опцию встраивания (Embed) изображения в текущий документ, чтобы не зависеть от исходного файла (иначе при его удалении изображение в текущем документе тоже пропадет).

2

Для примера рассмотрим обрезку фотографии с изображением металлического ключа, лежащего на деревянной поверхности.

3

Обрезка (clipping) в Inkscape — очень простая операция. Для начала нарисуйте прямоугольник (F4 или R) нужного размера поверх фотографии.

4

Теперь выделите оба объекта (фотографию и прямоугольник) и выберите в меню пункт Object → Clip → Set.

5

В результате должно получиться что-то типа этого:

Обрезка по сложному контуру

1

Выше мы рассмотрели обрезку фотографии по простому прямоугольнику. Однако точно так же можно использовать в качестве маски для обрезки гораздо более сложные фигуры. Мы можем выбрать инструмент рисования кривых (Shift+F6 или B), чтобы вручную обвести наш ключ.

2

Ручная обводка по нужному контуру — это в нашем случае самая кропотливая часть работы. Впрочем, форма ключа не такая уж сложная, времени на его обводку понадобится совсем немного. Естественно, перед подобной работой хорошо бы иметь хоть какие-то навыки работы с кривыми.

3

Мы чуть не забыли про отверстие в ключе. При помощи соответствующего инструмента (F5 или E) нарисуйте на его месте круг.

4

Я назначил ключу и кругу разные цвета, чтобы легче их различать. Теперь, чтобы проделать в форме ключа отверстие на месте окружности, выберите в меню Path → Difference (Ctrl+-).

5

Теперь заново перекрасим наш ключ в белый цвет. В диалоге заливки и обводки (Shift+Ctrl+F) я также применил небольшое размывание края формы (Blur), чтобы обрезанное изображение более естественно вписывалось в окружение (без резких границ).

6

Теперь осталось сделать почти то же самое, что мы уже делали с прямоугольником. Выделите оба объекта и на этот раз выберите в меню Object → Mask → Set.

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

Фото эффекты в Inkscape

1

В Inkscape можно применять к растровым изображениям некоторые эффекты. В нашем случае нам пригодится эффект, доступный через пункт меню Extensions → Color → Grayscale.

2

Также не помешает создать фон (обычный прямоугольник с градиентной заливкой) и добавить нашему ключику небольшую тень. Для создания тени можно использовать фигуру, которую мы создавали для маскирования — ее достаточно сдвинуть вниз и залить черной полупрозрачной заливкой, также при желании можно чуть увеличить размытость краев.

Как вы теперь можете видеть, обрезка растрового изображения в Inkscape (в том числе с использованием сложных масок) — довольно плевое дело. И эта возможность может очень вам помочь, особенно если вам часто приходится совмещать в одном изображении растровые и векторные элементы.


обрезка python opencv с использованием иерархии контуров

Задавать вопрос

спросил

Изменено 5 лет, 1 месяц назад

Просмотрено 5к раз

Я хотел удалить границы с изображения ниже

то, что я пробовал до сих пор, использует OpenCV для получения краев код:

 автообрезка по умолчанию (изображение, порог = 0):
    """Обрезает любые края ниже или равные порогу
    Обрезает пустое изображение до размера 1x1.
    Возвращает обрезанное изображение.
    """
    если len(image.shape) == 3:
        flatImage = np.max (изображение, 2)
    еще:
        плоское изображение = изображение
    утверждать len(flatImage.shape) == 2
    строки = np.
where (np.max (flatImage, 0)> порог) [0] если ряды.размер: cols = np.where(np.max(flatImage, 1) > порог)[0] изображение = изображение [столбцы [0]: столбцы [-1] + 1, строки [0]: строки [-1] + 1] еще: изображение = изображение [: 1, : 1] вернуть изображение no_border = автообрезка (новое_изображение) cv2.imwrite('no_border.png',no_border)

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

Обновление:

Я обнаружил, что решение работает для белого фона, но когда я меняю цвет фона, граница не удаляется

Отредактировано 900 30

Я попробовал решение на этом изображении

Но результат был таким

Как мне добиться полного удаления граничных рамок .

  • питон
  • opencv
2

Для этого используем функцию floodFill .

 импорт cv2
импортировать numpy как np
если __name__ == '__main__':
    # прочитать изображение и преобразовать в серый цвет
    img = cv2. imread('image.png',cv2.IMREAD_UNCHANGED)
    серый = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # порог серого изображения для бинаризации и его отрицания
    _, двоичный = cv2.threshold (серый, 150, 255, cv2.THRESH_BINARY)
    двоичный = cv2.bitwise_not (двоичный)
    # найти внешние контуры всех фигур
    _, контуры, _ = cv2.findContours (двоичный, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    # создаем маску для функции заполнения, см. документацию
    ч, ш, _ = изображение.форма
    маска = np.zeros((h+2,w+2), np.uint8)
    # определить, какой контур принадлежит квадрату или прямоугольнику
    для cnt в контурах:
        poly = cv2.приблизительноPolyDP(cnt, 0,02*cv2.arcLength(cnt,True),True)
        если len(poly) == 4:
            # если контур имеет 4 вершины, то заливаем этот контур черным цветом
            cnt = np.vstack(cnt).squeeze()
            _, двоичный, _, _ = cv2.floodFill (двоичный, маска, кортеж (cnt [0]), 0)
    # преобразовать изображение обратно в исходный цвет
    двоичный = cv2.
bitwise_not (двоичный) cv2.imshow('Изображение', бинарный) cv2.waitKey(0) cv2.destroyAllWindows()

9

Есть еще один, чтобы найти символы в изображении. Это использует концепцию иерархии в контурах.

Реализация на питоне:

 path = r'C:\Desktop\Stack'
имя файла = '2.png'
img = cv2.imread (os.path.join (путь, имя файла), 1)
серый = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, двоичный = cv2.threshold (серый, 0, 255, cv2.THRESH_BINARY|cv2.THRESH_OTSU)
_, контуры2, иерархия2 = cv2.findContours (двоичный, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_NONE)
 

Обратите внимание, что в функции cv2.findContours() передается параметр RETR_CCOMP для сохранения контуров в соответствии с их различными уровнями иерархии. Иерархия полезна, когда один контур лежит внутри другого контура, что позволяет установить связь родитель-потомок. RETR_CCOMP помогает определить эту связь.

 img2 = img.copy()
л = []
для h в иерархии2[0]:
    если h[0] > -1 и h[2] > -1:
        л. добавить (ч [2])
 

В приведенном выше фрагменте я передаю все контуры, у которых есть дочерние элементы, в список

л . Используя l , я рисую эти контуры во фрагменте ниже.

 для центов в л:
    если число > 0:
        cv2.drawContours(img2, [contours2[cnt]], 0, (0,255,0), 2)
cv2.imshow('img2', img2)
 

Ознакомьтесь с ДОКУМЕНТАЦИЕЙ ЗДЕСЬ, чтобы узнать больше об иерархии в контурах.

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Видео: кадрирование изображения по фигуре

Excel для Microsoft 365 Word для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Excel 2021 Word 2021 Outlook 2021 PowerPoint 2021 Excel 2019Word 2019 Outlook 2019 PowerPoint 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 Office 2016 Дополнительно… Меньше

Попробуйте!

Улучшите изображение в приложениях Office, придав ему другую форму.

Обрежьте изображение, чтобы оно соответствовало фигуре

  1. Выберите изображение.

  2. Выберите вкладку Picture Tools > Format , а затем выберите Crop > Crop to Shape .

  3. В галерее фигур выберите фигуру, которую вы хотите обрезать.

Добавьте рамку к изображению

  1. Выберите вкладку Picture Tools

    > Format и выберите Picture Border .

  2. Выберите цвет границы или выберите Толщину , чтобы сделать границу более заметной.

Применение стиля изображения к изображению

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *