Python中skeletonize报错图像包含0和1之外的值(Image contains values other than 0 and 1)
最近有个项目需要用到骨骼提取,于是百度了一下,需要用到skeletonize,读图,灰度处理+二值化,不出意外的报错了.
Traceback (most recent call last):
File "e:\PYTHON\gugetiqu\test.py", line 19, in <module>
skeleton =morphology.skeletonize(img)
File "D:\Python\lib\site-packages\skimage\morphology\_skeletonize.py", line 81, in skeletonize
skeleton = skeletonize_2d(image)
File "D:\Python\lib\site-packages\skimage\morphology\_skeletonize.py", line 174, in skeletonize_2d
raise ValueError('Image contains values other than 0 and 1')
ValueError: Image contains values other than 0 and 1
然而某度没有任何的相关内容,没办法只能自己解决了.
alt+鼠标左键进入_skeletonize.py,这是报错的地方.
np.in1d:其作用在于在序列B中寻找与序列A相同的值,并返回一逻辑值(True,False)或逻辑值构成的向量.
np.all:判断一个tuple或者list是否全为不为空,0,False。如果全不为空,则返回True;否则返回False.
大概意思就是在图像里面寻找0和1,找到了就True,当全部点都为True时,则继续执行,如果not True,则报错,说明有不同于0和1的值存在.
PS:这也是为什么百度不到这个error,因为这个error是skeletonize自己定义的.
到这一步就好办了,直接查到二值化这一步:
```python
ret,img = cv2.threshold(image,127,255,0)
这步以127为阈值把图像分成了255和0,而skeletonize需要的是1和0,将255改成1即可正常运行.
其他的二值化方法也是类似处理就行了.