处理由opencv boxPoints或轮廓包含的子图像?

时间:2017-08-10 02:57:43

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

在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)

所以我现在有一个数组,包含所有感兴趣区域的方位点。

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

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

谢谢:)

1 个答案:

答案 0 :(得分:0)

您可以做的是裁员投资回报率:

# 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)

我希望这会有所帮助。