Wie scanne ich ein Bild und schneide es mit einem Linux-Kommandozeilen-Tool automatisch auf den gescannten Inhalt zu?


3

Ich muss viele kleine Objekte mit ganz ähnlichen, aber nicht exakt gleichen Größen scannen.

Was ich gerne machen würde, ist:

Führen Sie ein Linux-Befehlszeilentool mit dem Dateinamen als Parameter aus, das den Scanner bis zu 10% der gesamten Scannergröße ausführt und das Bild auf den Inhalt zuschneidet, der nicht weiß ist (ein Quadrat wäre in Ordnung).

Weiß jemand, ob und wann dies möglich ist? Danke im Voraus!

Antworten:


2

Was Sie brauchen, ist convertvon imagemagick . Installieren Sie zuerst imagemagickfür Ihre Distribution. Führen Sie auf von Debian abgeleiteten Systemen diesen Befehl aus:

sudo apt-get install imagemagick

Wenn Sie nur Whitespace entfernen möchten, gehen Sie wie folgt vor:

for image in $(find . -name "*png" | sed 's/.png//'); do convert -trim $image.png $image_trimmed.png; done

Dies setzt voraus, dass Ihre Bilder PNGs sind, wenn Sie die obige Zeile nicht entsprechend ändern.

Wenn Sie eine schickere Größenänderung benötigen, sehen Sie sich die imagemagick-Dokumentation an . Sie können so gut wie alles tun, was Sie sich vorstellen können.

Ihr tatsächlicher Workflow wäre also:

  1. Scannen Sie Ihre Bilder und speichern Sie sie im selben Ordner.
  2. Führen Sie den oben angegebenen Befehl in diesem Ordner aus.

Dies funktioniert bei meinem Testbild nicht. Es wird kein weißes Pixel entfernt.
3.

@hennr, versuche meinen aktualisierten Vorschlag. Es sollte jetzt eine Datei mit dem Namen test_trimmed.png geben.
Terdon

@terdon Ich habe bereits den richtigen Befehl mit der Ausgabedatei ausgeführt, aber der Zuschnitt funktioniert nicht mit meinem gescannten Bild. Beachten Sie, dass ein Farbscan keine sauberen weißen Pixel liefert.
3.

Nun, Sie können mit dem Parameter -white-threshold herumspielen, um fast weiße Pixel in vollständig weiße Pixel umzuwandeln. Dies funktioniert jedoch nur bei dunkel gescannten Inhalten.
Hennr

Ah, ich verstehe, was du meinst @hennr. Entschuldigung, ich habe den Scan nicht berücksichtigt. Ich habe diesen Befehl erfolgreich verwendet, aber für perfekt weiße Bilder. Ich habe jetzt keine Zeit, eine Antwort zu schreiben, aber versuchen Sie es mit Gimp Scripting, es könnte für Sie funktionieren.
Terdon

1

Versuchen Sie Folgendes hinzuzufügen -fuzz:

-fuzz *distance*

Farben innerhalb dieses Abstands werden als gleich angesehen.

for image in $(find . -name "*png" | sed 's/.png//');
do convert -fuzz 255 -trim $image.png $image_trimmed.png; done
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.