2017-08-10 41 views
0

在python使用opencv3,我與用下面的代碼由boxPoints界定不同段的圖象:處理由opencv box包圍的子圖像點或輪廓就地?

(_, 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) 

所以我現在有一個數組,箱,包括所有分別的關心區域的的boxpoints輪廓。

我現在想要做的是能夠對每個框所包含的不同ROI執行操作(例如,模糊包含在框中的圖像中的所有部分/子圖像)。任何人都可以舉一個例子說明這將如何完成? (能夠對不同的子圖像執行不同的操作會是一個優點)。

如果不能就地操作這些子圖像,我怎樣才能將子圖像分離爲單獨的文件,對它們執行操作並將它們放回原始圖像的正確位置?

謝謝:)

回答

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) 

我希望這有助於。