Проверьте, находится ли пиксель внутри подключенного компонента в opencv python - PullRequest
2 голосов
/ 15 октября 2019

Я устанавливаю порог изображения, которое дает мне несколько белых областей. И у меня есть расположение пикселей, которое находится в одном из этих регионов. Я использую opencv connectedComponentsWithStats, чтобы получить регионы и затем определить, находится ли пиксель в какой-либо из этих областей. Как я могу это сделать?

На этой заметке есть ли лучший способ определить, в какой области с порогом расположен этот пиксель?

Ответы [ 2 ]

2 голосов
/ 15 октября 2019
numLabels, labelImage, stats, centroids = cv2.connectedComponentsWithStats(thresh, connectivity, cv2.CV_32S)

numLabels = количество меток или областей в вашем пороговом изображении

labelImage = матрица или изображение, содержащее уникальные метки (1, 2, 3 ..), представляющие каждую область, фон представлен как 0 вlabelImage.

stats = stats - это матрица статистики, которая содержит информацию о регионах.

центроиды = центроиды каждого региона.

В вашем случае вы можете использоватьlabelImage, чтобы узнать уникальное значение метки в пиксельной координате, чтобы выяснить, в какой области оно находится.

0 голосов
/ 15 октября 2019

Вы можете использовать функцию pointPolygonTest , чтобы проверить, находится ли точка внутри контура или нет.

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

Поскольку у вас есть подключенные компоненты и характеристики (которые вы нашли с помощью connectedComponentsWithStats), вы можететестируйте быстрее, используя этот подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...