Jak automatycznie przycinać zeskanowane obrazy za pomocą imagemagick lub graphicsmagick?


11

Mam zeskanowane obrazy w formacie * .jpg. Są one skanowane za pomocą skanera A4, w skali szarości lub w kolorze. Zeskanowane strony mają bardzo różne wymiary - niektóre A5, niektóre A6, niektóre wizytówki itp. Pokrywa skanera jest biała.

Chcę przyciąć wszystkie białe obramowania za pomocą imagemagick lub graphicsmagick (tych narzędzi, ponieważ chcę je dalej przetwarzać wsadowo). Rozumiem, że ramka jest skanowana, więc nie jest idealnie biała i że czasami może powodować przycinanie zbyt dużej lub zbyt małej ilości obrazu. Jednak używając parametru przycinania z fuzz zawsze otrzymuję zbyt duży obraz. Na przykład za pomocą obrazu wizytówki poniżej:

gm.exe convert -crop -fuzz 50% 01-pixelated.jpg 01-pixelated-gm.jpg

tworzy obraz, który wciąż nie jest wycinany z prawej i dolnej strony. Wynik jest taki sam bez względu na to, jaką liczbę podam w parametrze -fuzz.

Czy możesz to przetestować i doradzić linii poleceń, która wykona zadanie?

wprowadź opis zdjęcia tutaj


Czy chcesz przycinać bezpośrednio do krawędzi tekstu / treści, czy do krawędzi kartki papieru, niezależnie od jego rozmiaru (A4, A5, A6)? W twoim przykładzie dolna granica karty nie jest wcale widoczna - nie wiem, jak możesz ją wykryć.
willus

Chcę, aby została przycięta do krawędzi treści.
Arek

Odpowiedzi:


9

W ImageMagick wypróbuj to polecenie:

convert input.jpg -fuzz 80% -trim +repage output.jpg

Przetestowałem to z ImageMagick 6.4.4 Q16 i, począwszy od obrazu, który połączyłeś, uzyskałem ten obraz wyjściowy:

wynik


tak oczywiste, że źle dopasowałem -trim z -crop. Dziękuję Ci!
Arek
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.