Leptonica
C API do zaawansowanego przetwarzania obrazu
Biblioteka Open Source C umożliwia programistom wykonywanie zaawansowanych operacji przetwarzania obrazu, takich jak skalowanie, tłumaczenie, obracanie i ścinanie obrazów w ich własnych aplikacjach.
Leptonica to biblioteka do przetwarzania i analizy obrazów typu open source w języku C, która jest bardzo przydatna do pracy z obrazami dokumentów, a także z obrazami naturalnymi. Biblioteka jest bardzo stabilna i zawiera obsługę wielu formatów graficznych, takich jak JPEG, PNG, TIFF, WebP, JP2, BMP, PNM, PS, GIF i PDF. Możesz łatwo wykonywać operacje odczytu i zapisu na dostarczonej liście formatów obrazów. Biblioteka najczęściej wykorzystywała podejście obiektowe i zestaw zasad projektowania, które sprawiają, że kod jest bezpieczny, przenośny i przejrzysty.
Biblioteka zapewnia obsługę kilku ważnych operacji oraz zestaw narzędzi do przetwarzania i analizy obrazu. Biblioteka obsługuje takie operacje, jak skalowanie obrazu, translacja, obracanie, ścinanie, transformacje obrazu ze zmianami głębi pikseli, morfologia binarna i skala szarości, maskowanie Pixelwise, mieszanie, ulepszanie, operacje arytmetyczne i wiele innych. Obsługuje również kilka ważnych narzędzi, takich jak obsługa tablic typów danych związanych z obrazami, takich jak pixa, boxa, pta i inne.
Posiada również funkcje odczytu i zapisu plików zawierających kilka obrazów oraz zapisywania plików ze specjalnymi tagami TIFF osadzonymi w nagłówku. Umożliwia także programistom pisanie plików PostScript w różnych formatach, takich jak transformacja do formatu PDF, obrazy rastrowe i konwersja pliku PostScript do zestawu skompresowanych obrazów.
Pierwsze kroki z Leptonica
Najłatwiejszym sposobem zainstalowania Leptoniki jest użycie GitHub. Użyj następującego polecenia, aby uzyskać płynną instalację
Zainstaluj Leptonica przez GitHub.
git clone --depth=1 https://github.com/mrdoob/three.js.git
Czytanie i pisanie obrazów
Biblioteka open source Leptonica daje twórcom oprogramowania możliwość odczytywania i zapisywania obrazów we własnych aplikacjach. Udostępnia kilka ważnych metod odczytu i zapisu obrazów, takich jak funkcje niskiego i wysokiego poziomu do odczytu i zapisu danych obrazu, funkcje odczytu i zapisu plików z wieloma obrazami, pliki z tagami TIFF osadzonymi w nagłówku, odczyt plików JPEG , odczytywanie i zapisywanie plików PostScript oraz kilka innych funkcji. Biblioteka obsługuje również kilka specyficznych koderów.
Czytaj obrazy za pośrednictwem biblioteki Leptonica
// Open input image with leptonica library
Pix *image = pixRead("/usr/src/tesseract-3.02/phototest.tif");
api->SetImage(image);
// Get OCR result
char *outText;
outText = api->GetUTF8Text();
Skalowanie obrazu za pomocą biblioteki C
Biblioteka open source Leptonica zapewnia pełną obsługę skalowania obrazów we własnej aplikacji C z łatwością. Leptonica udostępnia liczne funkcje skalowania, takie jak skalowanie w górę za pomocą interpolacji liniowej, skalowanie w dół za pomocą podpróbkowania lub przez mapowanie obszaru, próbkowanie, interpolacja liniowa w górę 2x i 4x, podpróbkowanie liczb całkowitych RGB do szarości lub binarnie i wiele innych. Oprócz tego oferowane jest również bardzo szybkie skalowanie na obrazach binarnych i jest przydatne do analizy obrazu zeskanowanego tekstu binarnego.
Lepsze obracanie obrazu dzięki bibliotece C
Biblioteka open source Leptonica zapewniła obsługę obracania obrazów we własnych aplikacjach C. Istnieje wiele sposobów na wykonanie operacji obracania obrazu, takich jak obrót o ścinanie, obrót o odwzorowanie obszaru, specjalne obroty o 90, 180 lub 270 stopni, obrót o 2 lub 3 ścinanie i wiele innych.
Obrót obrazu o 180 stopni za pomocą biblioteki C
extra = w & 31;
if (extra)
shift = 32 - extra;
else
shift = 0;
if (shift)
rasteropHipLow(datas, w, h, d, wpls, 0, h, shift);
databpl = (w + 7) / 8;
bpl = 4 * wpls;
for (i = 0; i < h; i++) {
lines = datas + (h - 1 - i) * wpls;
lined = datad + i * wpld;
for (j = 0; j < databpl; j++) {
if (val = GET_DATA_BYTE(lines, bpl - 1 - j))
SET_DATA_BYTE(lined, j, tab[val]);
}
}
if (shift)
rasteropHipLow(datas, w, h, d, wpls, 0, h, -shift);