hierarchy = hierarchy[0] 在 Python 中是什么意思?
What does hierarchy = hierarchy[0] mean in Python?
我的任务是将一些 Python 代码翻译成 C#,但我遇到了一些困难,因为我没有使用 Python 的经验,而且该程序甚至使用 OpenCV 和NumPy.
这是代码的一部分,我不确定 hierarchy[0]
是如何分配的
_, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
hierarchy = hierarchy[0]
那个任务没有什么特别的。
仅仅通过阅读代码,我很清楚 findContours()
方法 return 是一个包含三个值的元组,第三个是一个序列并分配给 hierarchy
.然后下一行只是从该序列中获取第一个元素并将其分配回相同的名称。
如果您想了解 为什么 它这样做以及如何将其转换为 C++,您需要去 read the cv2::findContours()
documentation。查看cv2
文档时,它总是会向您显示C++版本,而C++使用输出参数; findCountours()
将 contours
和 hierarchy
作为函数将写入的两个输出数组。
在 Python 代码中,您只需将数组作为 return 值获取。这里,hierarchy
记录为
Optional output vector, containing information about the image topology. It has as many elements as the number of contours.
因此 hierarchy[0]
具有有关找到的第一个轮廓的信息,并且丢弃任何其他元素。
在代码的 C++ 翻译中,您必须为 contours
和 hierarchy
传入数组,然后再次从后者中提取第一个元素。
我的任务是将一些 Python 代码翻译成 C#,但我遇到了一些困难,因为我没有使用 Python 的经验,而且该程序甚至使用 OpenCV 和NumPy.
这是代码的一部分,我不确定 hierarchy[0]
是如何分配的
_, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
hierarchy = hierarchy[0]
那个任务没有什么特别的。
仅仅通过阅读代码,我很清楚 findContours()
方法 return 是一个包含三个值的元组,第三个是一个序列并分配给 hierarchy
.然后下一行只是从该序列中获取第一个元素并将其分配回相同的名称。
如果您想了解 为什么 它这样做以及如何将其转换为 C++,您需要去 read the cv2::findContours()
documentation。查看cv2
文档时,它总是会向您显示C++版本,而C++使用输出参数; findCountours()
将 contours
和 hierarchy
作为函数将写入的两个输出数组。
在 Python 代码中,您只需将数组作为 return 值获取。这里,hierarchy
记录为
Optional output vector, containing information about the image topology. It has as many elements as the number of contours.
因此 hierarchy[0]
具有有关找到的第一个轮廓的信息,并且丢弃任何其他元素。
在代码的 C++ 翻译中,您必须为 contours
和 hierarchy
传入数组,然后再次从后者中提取第一个元素。