代码之家  ›  专栏  ›  技术社区  ›  MigfibOri

hierarchy=hierarchy[0]在Python中是什么意思?

  •  0
  • MigfibOri  · 技术社区  · 6 年前

    我的任务是将一些Python代码翻译成C#,我遇到了一些困难,因为我没有Python方面的经验,程序甚至使用OpenCV和NumPy。

    这是代码的一部分,我不知道怎么做 hierarchy[0] 正在分配

    _, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    
    hierarchy = hierarchy[0]
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Martijn Pieters    6 年前

    那项任务没有什么特别之处。

    仅从阅读代码来看,我很清楚 findContours() 方法返回一个由三个值组成的元组,第三个值是序列,分配给 hierarchy 。然后,下一行只从该序列中提取第一个元素,并将其赋回相同的名称。

    如果你想了解 为什么? 它可以做到这一点,如何将其转换为C++,您需要 read the cv2::findContours() documentation 。当看到 cv2 文档,它总是会向您显示C++版本,以及C++使用的 输出参数 ; findCountours() 接受 contours 等级制度 作为两个输出数组,函数将向其中写入。

    在Python代码中,只需将数组作为返回值。在这里 等级制度 记录为

    可选输出向量,包含有关图像拓扑的信息。它包含的元素与轮廓的数量一样多。

    所以 hierarchy[0] 具有找到的第一个轮廓的信息,并且丢弃任何其他元素。

    在代码的C++翻译中,您必须为这两种代码传入数组 等高线 等级制度 ,然后再次从后者中提取第一个元素。