我的任务是将一些Python代码翻译成C#,由于我没有使用Python的经验,我一直遇到一些困难,而且该程序甚至使用OpenCV和NumPy。
这是代码的一部分,我不确定如何分配hierarchy[0]
_, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
hierarchy = hierarchy[0]
答案 0 :(得分:1)
这项任务没有什么特别之处。
只是阅读代码,我很清楚findContours()
方法返回三个值的元组,第三个是序列并分配给hierarchy
。然后,下一行只接受该序列中的第一个元素,并将其分配回相同的名称。
如果您正在尝试理解为什么它会执行此操作以及如何将其转换为C ++,则需要转到read the cv2::findContours()
documentation。查看cv2
文档时,它总是向您显示C ++版本,而C ++使用输出参数; findCountours()
将contours
和hierarchy
作为两个输出数组,函数将写入该数组。
在Python代码中,您只需将数组作为返回值。在这里,hierarchy
被记录为
可选输出向量,包含有关图像拓扑的信息。它具有与轮廓数量一样多的元素。
因此hierarchy[0]
有关于找到的第一个轮廓的信息,并且任何其他元素都被丢弃。
在代码的C ++翻译中,您必须传入contours
和hierarchy
的数组,然后再次从后者中提取第一个元素。