B, L, n, M = measure.label(BO_skel, connectivity=1, return_num=True),ValueError: not enough values to unpack (expected 4, got 2)
时间: 2023-08-28 19:38:18 浏览: 272
这个错误通常是因为你尝试解包的变量数量与实际返回的数量不匹配。在这个例子中,measure.label() 函数只返回了两个值,但您尝试用四个变量来接收它们。
您可以尝试使用以下代码:
```
B, L = measure.label(BO_skel, connectivity=1, return_num=True)
```
这将只使用两个变量来接收返回值。如果您需要使用其他两个变量,您可以使用 None 表示它们不需要接收返回值:
```
B, L, _, _ = measure.label(BO_skel, connectivity=1, return_num=True)
```
这将使用四个变量来接收返回值,但将不需要的两个变量设置为 _,表示它们不需要接收返回值。
相关问题
[B,L,n,M] = bwboundaries(BO_skel,"noholes");完全等效matlab的python代码
以下是 Python 中等效的代码:
```
import numpy as np
from skimage import measure
# BO_skel 是一个二值化的骨架图像
B, L, n, M = measure.label(BO_skel, connectivity=1, return_num=True)
boundaries = measure.find_contours(BO_skel, 0.5, 'high', fully_connected='low', positive_orientation='low')
# 检查是否存在外部轮廓
if len(boundaries) > 0:
boundary = boundaries[0]
boundary = np.flip(boundary, axis=1)
# 将坐标从浮点数转换为整数
boundary = boundary.astype(np.int32)
else:
boundary = None
```
其中,`measure.label()` 函数用于将二值化的骨架图像进行标记,`measure.find_contours()` 函数用于查找轮廓。最后,将轮廓坐标从浮点数转换为整数。
阅读全文
相关推荐













