Заполнить перфорированную форму в изображении, используя библиотеки Python?

1

У меня есть изображения BW с "перфорацией". Уровень перфорации может быть разным

Изображение 174551 Изображение 174551 Изображение 174551 Изображение 174551

Есть ли "стандартные" способы полностью заполнить фигуры черным, чтобы сделать их более похожими?

Подушка & opencv предпочтительнее, но imagemagick тоже может работать.

Теги:
opencv
image-processing
imagemagick
pillow

1 ответ

4
Лучший ответ

Для этого вы можете использовать морфологию изображения (то есть: закрытие).

import cv2
import numpy as np

if __name__ == '__main__':
    # read image
    image = cv2.imread('image.png',cv2.IMREAD_UNCHANGED)

    # convert image to gray
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # ensure only black and white pixels exist
    ret,binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY)

    # morphology works with white forground
    binary = cv2.bitwise_not(binary)

    # get kernel for morphology
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
    # number of iterations depends on the type of image you're providing
    binary = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel, iterations=3)

    # get black foreground
    binary = cv2.bitwise_not(binary)

    cv2.imshow('image', binary)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

Изображение 174551 Изображение 174551

Изображение 174551 Изображение 174551

  • 0
    почему инверсия? Вы не могли бы использовать открытие вместо закрытия?
  • 1
    @filippo Я мог бы, но я не хотел путать OP, так как он, кажется, новичок в OpenCV. Это была операция закрытия , поэтому я использовал cv2.MORPH_CLOSE .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню