【问题标题】:OpenCV - Accessing the cv2.findContours variablesOpenCV - 访问 cv2.findContours 变量
【发布时间】:2015-11-21 12:11:15
【问题描述】:

我正在使用 OpenCv 3.0 和 Python 2.7,对于光学字符识别,我需要找到通过 findContours 方法找到的每个轮廓的点。当我进行调试时,我可以看到找到了 208 个计数,但我很好奇如何访问它们。

以下是捕捉轮廓的方法:

contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

我需要这样的东西:

cv2.getcontoursPoints(contour)

【问题讨论】:

    标签: python python-2.7 opencv pycharm opencv3.0


    【解决方案1】:

    你已经在 contours 输出中有你的轮廓点,这是一个 python 列表,由 (x,y) 坐标的 Numpy 数组组成。请注意,正如documentation 中所说,您有几个轮廓层:

    [countours] 的每个轮廓都存储为点向量。

    因此,如果您打印contours[0],它将显示一个点列表。因此,如果您想精确访问特定层中的某个点,则必须再次详细说明索引。

    【讨论】:

    • 我不想画它们。我需要每个点的坐标值(如 int、double 或 float)来向我的机器教授字母。我将在机器学习算法中使用这些值。
    • 正如答案中所说,contours 中已经有坐标值......你有什么困扰?
    • 即在第一个轮廓我有 [[[532 229]] [[536 229]] [[539 232]] [[539 233]] [[540 234]] [[540 238]] [[539 239 ]] [[539 240]] [[536 243]] [[532 243]] [[528 239]] [[528 234]] [[529 233]] [[529 232]]] – 我需要得到这些数字通过使用一些特定的方法。
    • 我不明白你想要什么......你在回答你自己你有这些价值观在你的眼皮底下......你的目标是什么?你想用这些值做什么?请重新提出您的问题
    • 正是它们就在我眼前,但我无法在我的程序中获得这些值。 drawContours 用于绘图;但是我的目标是拥有特定的轮廓数组(作为数字)。例如,如何将第 45 个轮廓的值设为45th_contour = contour(45)。当我print 45th_contour 时,它会输出:[[344 179]] [[345 178]] [[348 178]] ...
    【解决方案2】:

    试试这个

    for cnt in contours: print(cnt)

    您将能够看到所有轮廓的 numpy 数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 2012-12-14
      • 2017-11-17
      相关资源
      最近更新 更多