【问题标题】:process subimages enclosed by opencv boxPoints or contours in-place?就地处理由opencv boxPoints或轮廓包围的子图像?
【发布时间】:2017-08-10 02:57:43
【问题描述】:

在 python 中使用 opencv3,我有一个由 boxPoints 界定的不同段的图像,使用下面的代码:

(_, conts, _) = cv2.findContours(img, mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_SIMPLE)

boxes = []
# loop over contours
for c in conts:    
    # get min bounding rect.
    min_rect_center_xy = min_rect[0]
    min_rect = cv2.minAreaRect(c)
    box = cv2.boxPoints(min_rect)
    box = np.int0(box)

    cv2.drawContours(img_segmented_boxed, contours=[box], contourIdx=0, color=(0,0,255), thickness=10)     
    boxes.append(box)

所以我现在有一个数组,boxes,其中包含所有感兴趣区域的 boxpoints。

我现在想做的是能够对每个框所界定的不同 ROI 执行操作(例如,模糊框内包含的图像中的所有部分/子图像)。谁能举例说明如何做到这一点? (能够对不同的子图像执行不同的操作将是一个加分项)。

如果无法就地操作这些子图像,我如何将这些子图像分成单独的文件,对它们执行操作并将它们放回原始图像的正确位置?

谢谢:)

【问题讨论】:

    标签: python opencv computer-vision opencv3.0 opencv-contour


    【解决方案1】:

    您可以做的是裁剪这些 ROI:

    # after boxes.append(box)
    for box in boxes:
            roi = cv2.getRectSubPix(image, int(box[1][0]), int(box[1][1]), box[0])
            #apply whatever operation on each ROIs for example a Gaussian Blur:
            roi = cv2.GaussianBlur(roi,(3,3),0)
    

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-12-30
      • 2019-07-18
      • 2012-04-13
      • 1970-01-01
      • 2011-12-13
      • 2021-08-16
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多