2017-08-10 4 views
0

En utilisant opencv3 en python, j'ai une image avec différents segments bornés par boxPoints en utilisant le code ci-dessous:sous-images de processus inclus par opencv boxPoints ou contours sur place?

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

J'ai maintenant un tableau, des boîtes, contenant les boxpoints de toutes les régions d'intérêt qui étaient profilé. Ce que je voudrais faire maintenant, c'est pouvoir effectuer des opérations sur les différentes ROI délimitées par chaque boîte (par exemple flouter toutes les sections/sous-images dans l'image contenue dans les boîtes). Quelqu'un pourrait-il donner un exemple de la façon dont cela serait fait? (Etre capable d'effectuer différentes opérations sur les différentes sous-images serait un plus).

S'il n'est pas possible de manipuler ces sous-images sur place, comment puis-je séparer les sous-images en fichiers séparés, effectuer des opérations sur celles-ci et les replacer dans les positions correctes?

Merci :)

Répondre

0

Ce que vous pouvez faire est la culture de ces régions d'intérêt:

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

J'espère que cela aide.