Почему я не получаю хорошее двоичное изображение с серым фоном с помощью модуля mahotas python?

У меня проблемы с изображением на сером фоне с библиотекой mahotas:

Пример:входное изображение

Это код:

import mahotas as mh
path ="./imagepath/a.jpg"
fork = mh.imread(path)  
bin = fork[:,:,0]
bfork = bin <230

После этого я получил это:выходное изображение

Что я делаю, чтобы получить черный фон и белый знак? Я попробовал в модуле opencv и было хорошо, но я предпочитаю махотас.

import cv2
path ="./imagepath/a.jpg"
ow =  int ((oshape[0]/100 )*7 )
oh =  int ((oshape[0]/100 )*7 )
gray = cv2.imread(path,0)
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(ow,oh)) 
graydilate = cv2.erode(gray, element) 
ret,thresh = cv2.threshold(graydilate,127,255,cv2.THRESH_BINARY_INV) 
bin = thresh

1 ответ

Решение

Вы делаете не так, как в версии opencv. Если вы это сделаете, вы получите желаемые результаты:

fork = mh.imread(path)
bin = fork[:,:,0]
bin = mh.erode(bin)
bin = (bin < 127)

Шаг эрозии отсутствовал, и порог был другим.

from matplotlib import pyplot as plt
plt.imshow(bin)
plt.gray()

Бинаризованная вилка

Другие вопросы по тегам