У меня возникли проблемы с кодом, который извлекает символы с изображения:питона mahotas: Применение порогового значения фильтра и сохранение изображения в PGN
Пример:
Исходное изображение Обработанное изображение
Я применяю кучу фильтров, чтобы попытаться извлечь определенные символы из этих знаков и отправить их в мое программное обеспечение OCR (гауссовые фильтры, сброс воды и порог).
Я хочу, чтобы применить порог Оцу фильтра к изображению, но когда я пытаюсь сохранить изображение, оно становится преобразуется в float64, что делает его unsaveable как PNG:
seeds,nseeds = mahotas.label(dnaf < T)
labeled = mahotas.cwatershed(dnaf.max() - dnaf, seeds)
labeled = labeled.astype('uint8')
T = mahotas.thresholding.otsu(labeled)
pylab.imshow(labeled > T)
pylab.show()
mahotas.imsave('py.png', labeled > T)
дает мне
File "imgtest2.py", line 67, in <module>
mahotas.imsave('py.png', labeled > T)
File "/usr/local/lib/python2.7/site-packages/mahotas/io/freeimage.py", line 798, in imsave
write(img, filename)
File "/usr/local/lib/python2.7/site-packages/mahotas/io/freeimage.py", line 586, in write
bitmap, fi_type = _array_to_bitmap(array)
File "/usr/local/lib/python2.7/site-packages/mahotas/io/freeimage.py", line 653, in _array_to_bitmap
'mahotas.freeimage: cannot write arrays of given type and shape.')
ValueError: mahotas.freeimage: cannot write arrays of given type and shape.
, если я пытаюсь сделать промежуточную переменную, которая сохраняет изображение с порогом прикладной, изображение становится пустым:
seeds,nseeds = mahotas.label(dnaf < T)
labeled = mahotas.cwatershed(dnaf.max() - dnaf, seeds)
labeled = labeled.astype('uint8')
T = mahotas.thresholding.otsu(labeled)
final = labeled > T
final = final.astype('uint8')
pylab.imshow(final)
pylab.show()
mahotas.imsave('py.png', final)
Что мне делать, чтобы исправить это?