opencv удаляет белые пиксели краев - PullRequest
0 голосов
/ 17 мая 2019

Здравствуйте, ребята, я пытаюсь сделать правильную сегментацию для плодов лимона.Я использую метод Оцу, чтобы получить лимон из области фона, но мои результаты не очень хорошие, как вы можете видеть на этом изображении.края лимонов сорта «зрелый» имеют белые пиксели по краям ¿что я могу сделать, чтобы это исправить?

image = cv2.imread(imagePath)
        original = image
        #(blur)
        image = cv2.blur(image,(31,31),0)
        #convert to hsv
        image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
        #(CV_RGB2GRAY)
        image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        #Otsu.
        ret, otsu = cv2.threshold(image,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

        #Apply mask
        result = cv2.bitwise_and(original, original, mask=otsu)

original lemon image:

Лимонный результат

Lemon result.

PD: я применил метод эрозии, чтобы исправить это .. он работает, но искажает форму моих лимонов .. спасибо ..

деформированный лимон после операции эрозии

warped lemon after erosion operation

1 Ответ

0 голосов
/ 17 мая 2019

Я бы попробовал замаскировать размытие по Гауссу:

blur = cv2.GaussianBlur(original, (5,5), 3)
result = cv2.bitwise_and(blur, blur, mask=otsu)

результат (может отличаться, так как ваша картинка в формате jpg)

enter image description here

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