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

Arek
źródło
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
2
askubuntu.com/questions/97695/… || stackoverflow.com/questions/14098965/...
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

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

Andrea
źródło
tak oczywiste, że źle dopasowałem -trim z -crop. Dziękuję Ci!
Arek