У меня есть изображение, загруженное в мой код (очень длинный и ненужный, не будет размещаться здесь), что мне нужно работать с skimage, чтобы обнаружить капли в изображении. Однако по некоторым причинам все изображения и попытки, которые я использовал, не работают.Преобразование изображения PIL в skimage?
Изображение изменено PIL в коде выше, чтобы объекты, которые я пытаюсь найти, только белые (255, 255, 255) и все остальные черные. Этот код должен только определить их позиции. Я попробовал много разных вещей, чтобы заставить это работать (преобразование их в массив numpy, а не преобразование их в массив nump массива).
Я следую этим инструкциям: http://scikit-image.org/docs/dev/auto_examples/plot_blob.html для основ, но это не действительно учебник, еще один пример.
Я думаю, что функция rgb2gray является проблематичной, поскольку она возвращает ничего, кроме 0, в то время как печать (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)
Как я могу это исправить?
EDIT:
Вот то, что каждый из образов, массивы и списки печати:
[[ 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
Не могли бы вы выслать 'max (img), min (img), img.dtype'? – Zero
попробуйте создать np.array (img) перед rgb2gray() и распечатать то, что у вас было до и после (так как Мэттью предлагает форму проверки и dtype) Попробуйте сделать свои собственные малые тестовые массивы (8,8,3) astype (np.uint8) и т. д., чтобы убедиться, что что-то конкретное останавливает его работу. – paddyg
max (img), min (img) и img.dtype все ошибки при запуске (тип изображения не итерируется, а dtype не является атрибутом img) Создание массива перед rgb2gray() ничего не делает, но в отредактированная часть сообщения, она показывает тестовые распечатки для (в порядке) img_gray, img, затем img_blobs (обнаруженные капли). –