Преобразование изображения PIL в изображение лыжи?
В моем коде загружено изображение (очень длинное и ненужное, я не буду здесь публиковать), над которым мне нужно поработать с Skimage, чтобы обнаружить пятна в изображении. Однако по какой-то причине все изображения и попытки, которые я использовал, не работают.
PIL в приведенном выше коде изменяет изображение, чтобы объекты, которые я пытаюсь найти, были только белыми (255, 255, 255), а все остальные пиксели - черными. Этот код должен только идентифицировать позиции этих. Я пробовал много разных вещей, чтобы заставить это работать (преобразование их в массив NumPy, не преобразовывая их в ECT NUMPY массив).
Я следую этим инструкциям: http://scikit-image.org/docs/dev/auto_examples/plot_blob.html, но это не учебник, а пример.
Я думаю, что функция rgb2gray является проблематичной, поскольку она возвращает только 0, в то время как print(numpy.array(img)) возвращает значения в диапазоне от 0 до 1, что указывает на то, что потеря информации происходит при вызове rgb2gray.
Вот код, который кажется проблематичным:
img_gray = rgb2gray(numpy.array(img)) # Convert to numpy array for skimage
print(img_gray)
print(numpy.array(img))
img_blobs = blob_doh(img_gray, threshold=0.01, max_sigma=500)
print(img_blobs)
Как я могу это исправить?
РЕДАКТИРОВАТЬ:
Вот что печатают каждое из изображений, массивов и списков:
[[ 0. 0. 0. ..., 0. 0. 0. ] #img_gray
[ 0. 0.00392157 0.01568627 ..., 0. 0. 0. ]
[ 0. 0.01176471 0.05882353 ..., 0. 0. 0. ]
...,
[ 1. 0.99607843 0.96078431 ..., 0. 0. 0. ]
[ 1. 1. 0.98039216 ..., 0. 0. 0. ]
[ 1. 1. 0.99215686 ..., 0. 0. 0. ]]
[[[ 0 0 0] #img
[ 0 0 0]
[ 0 0 0]
...,
[ 0 0 0] #img
[ 0 0 0]
[ 0 0 0]]
[[ 0 0 0] #img
[ 1 1 1]
[ 4 4 4]
...,
[ 0 0 0] #img
[ 0 0 0]
[ 0 0 0]]
[[ 0 0 0] #img
[ 3 3 3]
[ 15 15 15]
...,
[ 0 0 0] #img
[ 0 0 0]
[ 0 0 0]]
...,
[[255 255 255] #img
[254 254 254]
[245 245 245]
...,
[ 0 0 0] #img
[ 0 0 0]
[ 0 0 0]]
[[255 255 255] #img
[255 255 255]
[250 250 250]
...,
[ 0 0 0] #img
[ 0 0 0]
[ 0 0 0]]
[[255 255 255]
[255 255 255]
[253 253 253]
...,
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]]
[] #img_blobs
1 ответ
Это будет читать файлы изображений (используя PIL) в scimage:
from skimage import io
img = io.imread("./path/to/image.png")
Поскольку вы уже прочитали изображения и хотели самостоятельно выполнить преобразование данных, вы можете посмотреть, как авторы плагинов сделали это здесь: https://github.com/scikit-image/scikit-image/blob/master/skimage/io/_plugins/pil_plugin.py