2017-08-10 4 views
0

Mit opencv3 in Python habe ich ein Bild mit verschiedenen Segmenten von boxPoints begrenzt den Code unter Verwendung von: Ich habeUnterbilanzen verarbeiten, die von opencv boxPoints oder Konturen an Ort und Stelle eingeschlossen sind?

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

So, jetzt einen Array, Kisten, die boxpoints von allen Regionen von Interesse enthält, die waren konturiert.

Was ich jetzt tun möchte, ist in der Lage, Operationen auf den verschiedenen ROIs von jeder Box (z. B. blur alle Abschnitte/Unterbilder in dem Bild in den Boxen enthaltenen) zu führen. Könnte jemand ein Beispiel geben, wie dies geschehen würde? (Die Möglichkeit, verschiedene Operationen an den verschiedenen Teilbildern auszuführen, wäre ein Plus).

Wenn es nicht möglich ist, diese Unterbilder direkt zu bearbeiten, wie kann ich die Unterbilder in separate Dateien aufteilen, Operationen an ihnen vornehmen und sie an den richtigen Positionen in das Originalbild zurücklegen?

Thanks :)

Antwort

0

Was können Sie tun, ist Ernte diese ROIs:

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

Ich hoffe, das hilft.