Python OpenCV2:按轮廓区域

时间:2016-12-01 18:44:42

标签: python opencv image-processing

我希望按区域(最高区域到最低区域)迭代轮廓列表。

我知道一种方法是使用:

_, contours, heirachy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

for contour in sorted(contours, key=cv2.contourArea, reverse=True):
    ...

然而,我还想做的是在迭代时访问轮廓之间的层次关系 - 充其量我希望看到每个外部父项轮廓中包含多少轮廓,但是我也很乐意只是找到外轮廓那是内心轮廓的父母。

_, contours, hierarchy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

for i in zip(contours, hierarchy):
    contour = i[0]
    relations = i[1]
    x, y, w, h = cv2.boundingRect(contour)

    # outer contours:
    if relations[3] < 0:
        # checks if it is squarish
        if 0.85 < (w / h) < 1.1:
            corner += 1

    if corner == 3:
        break

我正在努力的是能够将轮廓压缩在一起,以便它们可以同时访问,但也可以从上到下遍历它们。

请注意,这样做的目的是找到QR码的三个标记角,所以我希望能够找到外部轮廓并且还从最高区域到最低区域迭代,以确保首先找到的轮廓是大角点正方形而不是QR码中较小的正方形

0 个答案:

没有答案
相关问题