2017-01-28 2 views
1

Ich habe eine Reihe von Graustufenbildern, wie folgt aus:Ernte unerwünschten schwarzen Raum des Bildes

enter image description here

Dies ist ein Beispiel Bild, da ich nicht das Originalbild veröffentlichen können. Jedes Bild hat einen Bereich mit einer Textur, einem reinen weißen Wasserzeichen (pos) und viel unerwünschtem schwarzen Raum.

Im Idealfall sollte das Bild beschnitten werden:

kann

enter image description here

Das Wasserzeichen in jedem Bild etwas unterschiedlich sein, aber immer sehr dünn reiner weißer Text.

Die Bilder können sehr unterschiedlich aussehen, hier ist ein weiteres Beispiel

enter image description here

dieses nur auf der linken Seite

enter image description here

eine andere Bedürfnisse des Stutzens:

enter image description here

braucht 363.210

dieses oben und unten abgeschnitten werden:

enter image description here

und eine weitere

enter image description here

dieses an der Spitze muss und rechts werden abgeschnitten. Beachten Sie, dass ich das Wasserzeichen in diesem Bild gelassen habe. Im Idealfall würde das Wasserzeichen auch entfernt werden, aber ich denke, es ist einfacher ohne.

Hier ist ein Bild des Wasserzeichens, wie es in Wirklichkeit aussieht.

enter image description here

Die Bilder sind unterschiedlich groß, aber sind in der Regel groß (über 2000x2000).

Ich suche nach einer Lösung in Python (cv2 vielleicht).

meine erste Idee war, so etwas zu verwenden: Python & OpenCV: Second largest object

aber diese Lösung Code nicht für mich

+0

Schauen Sie hier ... http://stackoverflow.com/a/41761313/2836621 –

+2

Zeigen Sie, was Sie bisher getan haben. – miindlek

+0

@MarkSetchell Danke, Mark, deine Lösung ist großartig und funktioniert, aber ich habe jetzt erkannt, dass ich die Bilder sofort bearbeiten muss, und das muss in Python gemacht werden. – spore234

Antwort

0

ich in C# und C++ arbeiten und funktionieren nicht in Python aber können Sie die Logik vorschlagen .

Sie müssen zwei Scan des Bildes, eine Reihe weise und andere Spalten weise.

Da Sie gesagt haben, dass der unerwünschte Teil des Bildes immer schwarz ist, lesen Sie einfach die Pixelwerte in beiden Scans. Wenn die Farbe aller Pixel in einer bestimmten Zeile schwarz ist, können Sie diese Zeile löschen oder löschen. Ähnliche Schritte können für das spaltenweise Scannen durchgeführt werden.

Jetzt können wir nicht einfach die Zeilen und Spalten löschen, also notieren Sie einfach die redundanten Zeilen und Spalten und dann können Sie Ihr Bild mit dem folgenden Code zuschneiden :(Ich werde in C# mit Emgucv-Bibliothek programmieren, aber es ist einfach zu Verstehen für Python)

Mat original_image = new Mat(); 
Rect ROI = new Rect(x,y,width,height); 
Mat image_needed_to_crop = new Mat(original_image,ROI); 

Dieser Code extrahiert nur die Region von Interesse aus dem Originalbild.