Leptonica
C API для расширенной обработки изображений
Библиотека C с открытым исходным кодом позволяет разработчикам выполнять расширенные операции обработки изображений, такие как масштабирование, перемещение, вращение, сдвиг внутри своих собственных приложений.
Leptonica — это библиотека C с открытым исходным кодом для обработки и анализа изображений, которая очень полезна для работы с изображениями документов, а также с естественными изображениями. Библиотека очень стабильна и поддерживает множество форматов изображений, таких как JPEG, PNG, TIFF, WebP, JP2, BMP, PNM, PS, GIF и PDF. Вы можете легко выполнять операции чтения и записи в предоставленном списке форматов изображений. В библиотеке в основном используется объектно-ориентированный подход и набор принципов проектирования, которые делают код безопасным, переносимым и прозрачным.
Библиотека обеспечивает поддержку нескольких важных операций и набор инструментов для обработки изображений, а также анализа изображений. Библиотека поддерживает такие операции, как масштабирование изображения, перемещение, вращение, сдвиг, преобразование изображения с изменением глубины пикселей, двоичную морфологию и полутоновую морфологию, маскирование Pixelwise, смешивание, улучшение, арифметические операции и многое другое. Он также поддерживает несколько важных утилит, например для обработки массивов типов данных, связанных с изображениями, таких как pixa, boxa, pta и другое.
Он также предоставил функции для чтения и записи файлов с несколькими изображениями и записи файлов со специальными тегами TIFF, встроенными в заголовок. Это также позволяет разработчикам записывать файлы PostScript в различных форматах, таких как преобразование в PDF, растровые изображения и преобразование файла PostScript в набор сжатых изображений.
Начало работы с Лептоникой
Самый простой способ установить 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
Библиотека с открытым исходным кодом 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);