удаление шумов с изображения дорожного покрытия в opencv python
Идея в том что с с помощью treshold находятся контуры ямы или трещины, изображение обрезается под конкретный контур и закидывается в НС. Нужно убрать лишние шумы отражающиеся в thesholde, как это сделать?
gray = cv2.cvtColor(masked, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
ret, threshold = cv2.threshold(blurred, 98[![введите сюда описание изображения][1]][1], 255, 1)
contours, hierarchy = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
Ответы (1 шт):
Автор решения: Alex Alex
→ Ссылка
Попробуйте так выделить объекты по площади, диапазон площадей надо подобрать:
output = cv2.connectedComponentsWithStats(threshold, 8, cv2.CV_32S)
area=output[2][:,4]
cond=(1000>area)&(area>250) # выделяем объекты с площадью от 250 до 1000
idx=np.nonzero(cond)
mask = np.isin(output[1], idx)
cv2.imwrite('test.png', 255*np.uint8(~mask))
Это должно работать побыстрее контуров.
