我的代码中加载了一个图片(非常长且不必要,在此处发布),我需要使用skimage来检测图像中的斑点。但是出于某些原因,我使用的所有图像和尝试都不起作用。
在上面的代码中,PIL修改了图像,使我试图找到的对象只有白色(255,255,255),所有其他像素都是黑色。此代码只需要识别这些位置。我已经尝试了许多不同的东西来使它工作(将它们转换为numpy数组,而不是将它们转换为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
答案 0 :(得分: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