Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:TypeError:scikit image regionprops仅支持二维和三维图像_Python_Numpy_Image Processing_2d_Scikit Image - Fatal编程技术网

Python:TypeError:scikit image regionprops仅支持二维和三维图像

Python:TypeError:scikit image regionprops仅支持二维和三维图像,python,numpy,image-processing,2d,scikit-image,Python,Numpy,Image Processing,2d,Scikit Image,给定一个类似的numpy.ndarray myarray= array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

给定一个类似的
numpy.ndarray

myarray= 
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1])
我想在数组(已标记)上使用
scikit image
,以派生一些属性

我就是这么做的:

myarray.reshape((11,11))                  
labelled=label(myarray)
props=sk.measure.regionprops(labelled)
但是我得到了这个错误:
类型错误:仅支持二维和三维图像。
,指向
道具有什么问题?我传递给道具的图像已经是2D对象。

myarray的形状

In [17]: myarray
Out[17]: 
array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])

我尝试了此代码,但没有出现错误:

import numpy as np
from skimage.measure import label, regionprops

myarray = np.random.randint(1, 4, (11,11), dtype=np.int64)
labelled = label(myarray)
props = regionprops(labelled)
样本输出:

In [714]: myarray
Out[714]: 
array([[1, 2, 1, 1, 3, 3, 1, 1, 3, 3, 3],
       [1, 1, 3, 1, 3, 2, 2, 2, 3, 3, 2],
       [3, 3, 3, 1, 3, 3, 1, 1, 2, 3, 1],
       [1, 3, 1, 1, 1, 2, 1, 3, 1, 3, 3],
       [3, 2, 3, 3, 1, 1, 2, 1, 3, 2, 3],
       [3, 2, 1, 3, 1, 1, 3, 1, 1, 2, 2],
       [1, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2],
       [3, 3, 1, 1, 3, 2, 1, 2, 2, 2, 1],
       [1, 1, 1, 3, 3, 2, 2, 3, 3, 3, 1],
       [1, 2, 2, 2, 2, 2, 1, 3, 3, 2, 2],
       [3, 2, 2, 3, 1, 3, 3, 1, 3, 3, 2]], dtype=int64)

In [715]: labelled
Out[715]: 
array([[ 0,  1,  0,  0,  2,  2,  3,  3,  4,  4,  4],
       [ 0,  0,  5,  0,  2,  6,  6,  6,  4,  4,  7],
       [ 5,  5,  5,  0,  2,  2,  0,  0,  6,  4,  8],
       [ 9,  5,  0,  0,  0, 10,  0,  4,  0,  4,  4],
       [ 5, 11,  5,  5,  0,  0, 10,  0,  4, 12,  4],
       [ 5, 11,  0,  5,  0,  0, 13,  0,  0, 12, 12],
       [14,  5,  0,  0,  0,  0, 13, 13,  0, 12, 12],
       [ 5,  5,  0,  0, 15, 12,  0, 12, 12, 12, 16],
       [ 0,  0,  0, 15, 15, 12, 12, 17, 17, 17, 16],
       [ 0, 12, 12, 12, 12, 12, 18, 17, 17, 19, 19],
       [20, 12, 12, 21, 22, 17, 17, 18, 17, 17, 19]], dtype=int64)

In [716]: props[0].area
Out[716]: 1.0

In [717]: props[1].centroid
Out[717]: (1.0, 4.4000000000000004)
我注意到,当
myarray
的所有元素都具有相同的值时(如您的示例中所示),
标记的
是一个零数组。我也在文档中读到了这一点:

参数:标签图像:(N,M)ndarray
标记输入图像。忽略值为0的标签


也许您应该使用一个具有多个不同值的
myarray
,以获得有意义的属性…

我尝试了这段代码,但没有出现错误:

import numpy as np
from skimage.measure import label, regionprops

myarray = np.random.randint(1, 4, (11,11), dtype=np.int64)
labelled = label(myarray)
props = regionprops(labelled)
样本输出:

In [714]: myarray
Out[714]: 
array([[1, 2, 1, 1, 3, 3, 1, 1, 3, 3, 3],
       [1, 1, 3, 1, 3, 2, 2, 2, 3, 3, 2],
       [3, 3, 3, 1, 3, 3, 1, 1, 2, 3, 1],
       [1, 3, 1, 1, 1, 2, 1, 3, 1, 3, 3],
       [3, 2, 3, 3, 1, 1, 2, 1, 3, 2, 3],
       [3, 2, 1, 3, 1, 1, 3, 1, 1, 2, 2],
       [1, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2],
       [3, 3, 1, 1, 3, 2, 1, 2, 2, 2, 1],
       [1, 1, 1, 3, 3, 2, 2, 3, 3, 3, 1],
       [1, 2, 2, 2, 2, 2, 1, 3, 3, 2, 2],
       [3, 2, 2, 3, 1, 3, 3, 1, 3, 3, 2]], dtype=int64)

In [715]: labelled
Out[715]: 
array([[ 0,  1,  0,  0,  2,  2,  3,  3,  4,  4,  4],
       [ 0,  0,  5,  0,  2,  6,  6,  6,  4,  4,  7],
       [ 5,  5,  5,  0,  2,  2,  0,  0,  6,  4,  8],
       [ 9,  5,  0,  0,  0, 10,  0,  4,  0,  4,  4],
       [ 5, 11,  5,  5,  0,  0, 10,  0,  4, 12,  4],
       [ 5, 11,  0,  5,  0,  0, 13,  0,  0, 12, 12],
       [14,  5,  0,  0,  0,  0, 13, 13,  0, 12, 12],
       [ 5,  5,  0,  0, 15, 12,  0, 12, 12, 12, 16],
       [ 0,  0,  0, 15, 15, 12, 12, 17, 17, 17, 16],
       [ 0, 12, 12, 12, 12, 12, 18, 17, 17, 19, 19],
       [20, 12, 12, 21, 22, 17, 17, 18, 17, 17, 19]], dtype=int64)

In [716]: props[0].area
Out[716]: 1.0

In [717]: props[1].centroid
Out[717]: (1.0, 4.4000000000000004)
我注意到,当
myarray
的所有元素都具有相同的值时(如您的示例中所示),
标记的
是一个零数组。我也在文档中读到了这一点:

参数:标签图像:(N,M)ndarray
标记输入图像。忽略值为0的标签


也许您应该使用一个具有多个不同值的
myarray
,以获得有意义的属性…

我也遇到了同样的问题,然后在检查Tonechas答案后,我意识到我是从scipy导入标签,而不是从skimage导入标签

from scipy.ndimage.measurements import label
我只是把它换成了

from skimage.measure import label, regionprops

一切正常:)

我也遇到了同样的问题,在检查了Tonechas的答案后,我意识到我是从scipy而不是Skipage导入标签

from scipy.ndimage.measurements import label
我只是把它换成了

from skimage.measure import label, regionprops

一切正常:)

一个根据二进制系统重新分类输入图像的函数。
label
skimage.measure.label
的缩写还是自己创建的函数?它是一个缩写。一个根据二进制系统重新分类输入图像的函数。
label
skimage.measure.label
还是您自己创建的函数?这是一个速记。我有一个问题,我有一行
BODY\u labels=label(np.array(BODY,dtype=np.uint8))
,但是,它显示了一个错误`BODY\u labels=label(np.array(BODY,dtype=np.uint8))类型错误:“numpy.ndarray”对象不可调用”。如何解决此错误?我有一个问题,我有一行
BODY\u labels=label(np.array(BODY,dtype=np.uint8))
,但是,它显示了一个错误`BODY\u labels=label(np.array(BODY,dtype=np.uint8))TypeError:'numpy.ndarray'对象不可调用'。如何解决这个错误?