Leptonica
C API для розширеної обробки зображень
Бібліотека C з відкритим вихідним кодом дозволяє розробникам виконувати розширені операції обробки зображень, як-от масштабування зображення, переклад, поворот, зсув у власних програмах.
Leptonica — це бібліотека C із відкритим вихідним кодом для обробки й аналізу зображень, яка дуже корисна для роботи із зображеннями документів, а також природними зображеннями. Бібліотека є дуже стабільною та містить підтримку багатьох форматів зображень, таких як JPEG, PNG, TIFF, WebP, JP2, BMP, PNM, PS, GIF і PDF. Ви можете легко виконувати операції читання та запису в наданому списку форматів зображень. Бібліотека здебільшого використовує об’єктно-орієнтований підхід і набір принципів проектування, які роблять код безпечним, переносним і прозорим.
Бібліотека забезпечує підтримку кількох важливих операцій і набір інструментів для обробки та аналізу зображень. Бібліотека підтримує такі операції, як масштабування зображення, переклад, обертання, зсув, перетворення зображення зі зміною глибини пікселів, двійкова морфологія та морфологія відтінків сірого, піксельне маскування, змішування, покращення, арифметичні операції та багато іншого. Він також підтримує кілька важливих утиліт, як-от для роботи з масивами пов’язаних із зображеннями типів даних, таких як pixa, boxa, pta і інше.
Він також надав функції для читання та запису файлів, що містять кілька зображень, і запису файлів зі спеціальними тегами TIFF, вбудованими в заголовок. Це також дозволяє розробникам записувати файли PostScript у різноманітних форматах, таких як трансформація у PDF, растрові зображення та перетворення файлу PostScript у набір стиснених зображень.
Початок роботи з Leptonica
Найпростіший спосіб встановити Leptonica — за допомогою GitHub. Будь ласка, використовуйте наступну команду для плавного встановлення
Встановіть Leptonica через GitHub.
git clone --depth=1 https://github.com/mrdoob/three.js.git
Читання і запис зображень
Бібліотека з відкритим кодом Leptonica дає розробникам програмного забезпечення можливість читати та записувати зображення у своїх власних програмах. Він надав кілька важливих методів для читання та запису зображень, таких як низькорівневі та високорівневі функції для читання та запису даних зображень, функції для читання та запису файлів із кількома зображеннями, файлів із тегами TIFF, вбудованими в заголовок, читання файлів JPEG , читання та запис файлів PostScript і кілька інших функцій. Є деякі спеціальні кодери, які також підтримуються бібліотекою.
Читайте зображення через бібліотеку 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();
Масштабування зображення за допомогою бібліотеки C
Бібліотека з відкритим кодом Leptonica забезпечила повну підтримку для легкого масштабування зображень у їхній власній програмі C. Існують численні функції масштабування, надані Leptonica, такі як підвищення масштабу за допомогою лінійної інтерполяції, зменшення масштабу за допомогою субдискретизації або за допомогою відображення області, вибірки, 2x і 4x збільшення лінійної інтерполяції, цілочисельної субдискретизації RGB до сірого або двійкового та багато іншого. Крім того, також пропонується дуже швидке масштабування двійкових зображень, що корисно для аналізу зображень відсканованого двійкового тексту.
Краще обертання зображення через C Library
Бібліотека з відкритим вихідним кодом Leptonica забезпечила підтримку обертання зображень у своїх власних програмах C. Існує багато способів виконання операції обертання зображення, наприклад обертання за допомогою зсуву, обертання за допомогою відображення області, спеціальні обертання на 90, 180 або 270 градусів, обертання на 2 або 3 зсуву та багато іншого.
Поворот зображення на 180 градусів через бібліотеку 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);