Python: поиск черного фона на изображении - PullRequest
0 голосов
/ 04 мая 2020

У меня есть изображение, и я хотел бы найти интенсивность нулевой области (черный). Моя идея - нарисовать маленькую рамку вокруг черной области. Это то, что я ожидаю в качестве результата.

enter image description here (x, y) - центр коробки. Я рисую 40 блок вокруг него

Моя попытка выглядит следующим образом:

import cv2
from random import *

img = cv2.imread("path/to/image.png", cv2.IMREAD_GRAYSCALE)

img = cv2.resize(img, (600, 800)) 
rows,cols = img.shape[:2]

try:
    for i in range(100):
        x = randint(1, rows)    # Pick a random number between 1 and rows.
        y = randint(1, cols)    # Pick a random number between 1 and rows.

        while True:
            sum_intensity = 0
            for i in range(x-20, x+20):
                for j in range(y-20, y+20):
                    intensity = img[i,j]
                    sum_intensity += intensity

            if sum_intensity == 0:
                print("zero intensity found")
                cv2.rectangle(img, (x-20, y+20), (x+20, y-20), (255, 255, 255), 2)
                cv2.imwrite("path/to/save.png", img) 
                break

            else:
                print("No zero intensity")
                break

except:
    pass

один из примеров сгенерированных блоков приведен ниже: вы можете видеть, в которых есть перекрывающиеся блоки с серым регионом, которого я хочу избежать !! Я должен выбрать полный фон (черный). Кроме того, мне просто нужна одна коробка ... не нужно видеть несколько из них. Я знаю, что могу использовать переменную boolian, но не знаю, как в python. enter image description here

1 Ответ

1 голос
/ 04 мая 2020

Если я правильно понимаю, вы хотите найти квадрат 41 x 41, который содержит только черный (значение 0).

Этого можно добиться, выполнив расширение 41 x 41 и выбрав любой черный пиксель, который является центром желаемой площади. (Изображение преобразуется в двоичную форму для ясности; белые квадраты возникают из-за паразитных пикселей на исходном изображении.)

enter image description here

...