Я хочу сегментировать патчи размером 32x32px или более с помощью Python OpenCV - PullRequest
0 голосов
/ 27 июня 2018

Здесь у меня есть изображение:
**Image_Original.jpg**
Затем я сгенерировал пороговое изображение, используя код ниже.

img = cv2.imread('Image_Original.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_gr = np.array([40,0,0])
upper_gr = np.array([90,255,255])
mask = cv2.inRange(hsv,lower_gr,upper_gr)
mask=~mask
res = cv2.bitwise_and(img,img,mask = ~mask)
cv2.imshow('Masked',mask)
cv2.imshow('Result',res)

Тогда следующие изображения (в масках):
**Masked**
и (результат):
**Result**

Теперь я хочу удалить черные пиксели ( ИЗ ТОЛЬКО ОРИГИНАЛЬНОГО ИЗОБРАЖЕНИЯ ), установив их в ноль, и я хочу извлечь только патчи размером 32x32px или более.

1 Ответ

0 голосов
/ 27 июня 2018

Используйте cv2.findContours (), чтобы найти границы белых пятен на изображении маски. Каждая граница возвращается в виде списка 2D точек.

Используйте cv2.boundingRect (), чтобы получить ширину / высоту каждого патча и соответственно отфильтровать. Вы также можете использовать cv2.minAreaRect () или cv2.contourArea () для фильтрации по фактической площади патча.

https://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.htm

После того, как вы определили, какие патчи следует отбрасывать, замените их черным на цветном изображении с помощью cv2.fillPoly ().

...