Python遍历概率霍夫变换返回的点数组出现解包错误如何解决
问题原因分析
你遇到的解包错误完全是数组嵌套层级不匹配导致的:
- 你打印的
lines是两层嵌套结构:外层列表存储的是每次调用probabilistic_hough_line返回的结果集合,内层才是单次检测得到的所有线段端点列表。直接遍历lines时,每次迭代拿到的是一整组线段集合,自然无法拆解为2组坐标值,触发解包错误。 - 你的原始代码循环2次调用霍夫变换,每次结果都
append到lines中,所以lines的长度等于你循环调用的次数,结构为[第一次检测的所有线段, 第二次检测的所有线段]。
修正方案
根据你的使用场景二选一即可:
- 如果你只需要遍历单次检测的所有线段:直接取内层列表遍历即可
for (x0, y0), (x1, y1) in lines[0]: # 后续线段处理逻辑
- 如果你需要遍历多次检测的所有线段:加一层外层循环遍历所有检测批次
for detection_batch in lines: for (x0, y0), (x1, y1) in detection_batch: # 后续线段处理逻辑
如果你原本就只需要执行一次霍夫变换,可以直接把返回结果赋值给lines,无需循环+append,后续也不需要加[0]索引:
lines = probabilistic_hough_line(image, threshold=2, theta=tested_angles, line_length=0, line_gap=int(np.ceil(np.sqrt(np.square(image.shape[0]) + np.square(image.shape[1]))))) for (x0, y0), (x1, y1) in lines: # 后续线段处理逻辑
内容的提问来源于stack exchange,提问作者A. Vreeswijk
相关产品推荐
相关产品推荐

