2010-12-17 9 views
0

Ich habe über 100k in Bildern, die zu einem Zeitpunkt abgeschnitten wurden und hatte eine weiße Grenze auf sie angewendet. Ich bin auf der Suche nach dem besten Weg, jedes Bild programmatisch zu verarbeiten, so dass ich die weißen Ränder erkennen und entweder den Rand zuschneiden oder den Rand stattdessen mit Schwarz ausfüllen kann. Müsste ich etwas wie OpenCV oder einfach nur alte GDI verwenden? Ich habe ein Bild als Referenz beigefügt.Der beste Weg, um einen weißen Rand mit einem schwarzen Rand auf Bilder programmatisch zu füllen

Was ich habe, mit zu arbeiten (weiß Grenzen gibt, vertrauen Sie mir):

http://cdn-images.hollywood.com/site/SO_3666231.jpg

Antwort

0

Plain alten GDI sollte gut funktionieren, außer einer Sache - ich weiß nicht, wie zu machen GDI speichert ein Bild in einer Datei. Wenn ich es in der Vergangenheit machen musste, habe ich eine .BMP-Datei in Stücke geschrieben, die für ein JPEG nicht funktionieren würde. Zeit für eine neue Frage?

Sie werden einen zweistufigen Prozess benötigen - zuerst messen Sie die weißen Ränder, dann kopieren Sie das Bild in ein neues Bild, um sie loszuwerden.

Der Start mit einem JPEG-Bild führt zu zwei kleinen Problemen. Erstens wird das Bild einige Decodierungsartefakte enthalten, und Weiß ist nicht immer ein RGB-Wert von (255,255,255). Sie müssen einen Schwellenwert wie (250,250,250) festlegen und sehen, wie das funktioniert. Wenn es nicht alle Grenzen erfasst, müssen Sie einen niedrigeren Schwellenwert versuchen. Zweitens führt das erneute Speichern des Bildes als JPEG zu zusätzlichen Artefakten, die die Qualität des Bildes beeinträchtigen. Hoffentlich wird dies innerhalb akzeptabler Grenzen liegen, aber nur Sie können das beurteilen.

Es tut mir leid, dass dies nicht wirklich eine Antwort ist, vielleicht eher 1/4 einer Antwort. Ich hoffe, Sie finden es nützlich.