Python中skeleton,skeletonize报错图像包含0和1之外的值(Image contains values other than 0 and 1)

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即可正常运行.
在这里插入图片描述
其他的二值化方法也是类似处理就行了.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值