2016-07-21 7 views
1

Ich arbeite mit Python und OpenCV und ich bin ein Neuling in beiden. Für mein Projekt muss ich ein Schiebefenster über ein Bild bewegen; für jede Position des Fensters muss der Bereich außerhalb des Fensters dunkler als der Bereich innerhalb des Fensters angezeigt werden.Python + OpenCV, ändern Helligkeit/Dunkelheit außerhalb eines Schiebefensters?

Dies ist der Teil meines Codes, die Pflege des Bildes und Fenster Visualisierung (die gültigen Positionen für die Schiebefenster sind irgendwo anders berechnet)

for (x, y, window) in valid_positions:   
    if window.shape[0] != winH or window.shape[1] != winW: 
     continue 

    # Put here stuff to process the window content 
    # i.e apply a classifier 

    clone = image.copy() 
    cv2.rectangle(clone, (x, y), (x + winW, y + winH), (0, 255, 0), 2) 

    cv2.imshow("Window", clone) 
    cv2.waitKey(1) 
    time.sleep(0.025) 

Das Fenster erstellt wird und es gleitet auf dem gültigen nimmt Positionen, damit dieser Teil gut funktioniert. Aber ich habe absolut keine Ahnung, wie man das Bild außerhalb des Fensters dunkler erscheinen lässt.

Irgendwelche Vorschläge? Vielen Dank im Voraus.

EDIT: Ich habe vergessen, ein wichtiges Detail hinzuzufügen: meine Eingabe Bilder sind immer in Schwarz und Weiß (nicht einmal Graustufen, nur schwarz und weiß Pixel). Vielleicht macht es das leichter, die Helligkeit/Dunkelheit zu ändern?

Antwort

1

Im Allgemeinen können Sie den Inhalt im Fenster beibehalten und die Intensität des gesamten Bildes verringern. Ersetzen Sie dann den Bereich innerhalb des Fensters durch den ursprünglichen Inhalt. Dieser Trick sollte funktionieren. Dieser Teil des Codes kann wie folgt aussehen:

clone = image.copy() 
windowArea = clone[y:y + winH, x:x + winW].copy() 
clone = np.floor(clone * 0.5).astype('uint8') # 0.5 can be adjusted 
clone[y:y + winH, x:x + winW] = windowArea 
cv2.rectangle(clone, (x, y), (x + winW, y + winH), (0, 255, 0), 2) 
+0

Vielen Dank, das hat wie ein Charme funktioniert! : D –