Leptonica
API C pour le traitement d'image avancé
La bibliothèque Open Source C permet aux développeurs d'effectuer des opérations avancées de traitement d'image comme la mise à l'échelle, la traduction, la rotation et le cisaillement des images dans leurs propres applications.
Leptonica est une bibliothèque open source de traitement et d'analyse d'images C qui est très utile pour travailler avec des images de documents ainsi que des images naturelles. La bibliothèque est très stable et prend en charge de nombreux formats d'image tels que JPEG, PNG, TIFF, WebP, JP2, BMP, PNM, PS, GIF et PDF. Vous pouvez facilement effectuer des opérations de lecture et d'écriture sur la liste fournie des formats d'image. La bibliothèque a principalement utilisé une approche orientée objet et un ensemble de principes de conception qui rendent le code sûr, portable et transparent.
La bibliothèque fournit un support pour plusieurs opérations importantes et un ensemble d'outils pour le traitement d'image ainsi que l'analyse d'image. La bibliothèque prend en charge des opérations telles que la mise à l'échelle de l'image, la traduction, la rotation, le cisaillement, les transformations d'image avec des changements de profondeur de pixel, la morphologie binaire et en niveaux de gris, le masquage Pixelwise, le mélange, l'amélioration, les opérations arithmétiques et bien d'autres. Il prend également en charge plusieurs utilitaires importants tels que la gestion de tableaux de types de données liés à l'image tels que pixa, boxa, pta et autre.
Il a également fourni des fonctions pour lire et écrire des fichiers ayant plusieurs images et écrire des fichiers avec des balises TIFF spéciales intégrées dans l'en-tête. Il permet également aux développeurs d'écrire des fichiers PostScript dans une variété de formats tels que la transformation en PDF, les images raster et la conversion d'un fichier PostScript en un ensemble d'images compressées.
Premiers pas avec Leptonica
Le moyen le plus simple d'installer Leptonica est d'utiliser via GitHub. Veuillez utiliser la commande suivante pour une installation fluide
Installez Leptonica via GitHub.
git clone --depth=1 https://github.com/mrdoob/three.js.git
Lire et écrire des images
La bibliothèque de la source ouverte Leptonica permet aux concepteurs de logiciels de lire et d'écrire des images dans leurs propres applications. Il a fourni plusieurs méthodes importantes de lecture et d'écriture d'images telles que des fonctions de faible niveau et de haut niveau pour la lecture et l'écriture des fichiers JIFF. Certains encodes spécifiques sont également appuyés par la bibliothèque.
Lire les images par la bibliothèque de 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();
Mise à l'échelle de l'image via la bibliothèque C
La bibliothèque open source Leptonica a fourni un support complet pour la mise à l'échelle des images dans leur propre application C avec facilité. Il existe de nombreuses fonctions de mise à l'échelle fournies par Leptonica, telles que la mise à l'échelle par interpolation linéaire, la réduction par sous-échantillonnage ou par cartographie de zone, l'échantillonnage, la mise à l'échelle par interpolation linéaire 2x et 4x, le sous-échantillonnage entier de RVB en gris ou binaire, et bien d'autres. En dehors de cela, une mise à l'échelle très rapide sur les images binaires est également proposée et est utile pour l'analyse d'image du texte binaire numérisé.
Meilleure rotation d'image via la bibliothèque C
La bibliothèque open source Leptonica a fourni un support pour la rotation des images dans leurs propres applications C. Il existe de nombreuses façons de réaliser l'opération de rotation d'image, telles que la rotation par cisaillement, la rotation par mappage de zone, les rotations spéciales de 90, 180 ou 270 degrés, la rotation par 2 ou 3 cisaillements, et bien d'autres.
180 Rotation dans l'image par la bibliothèque 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);