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
Ο ευκολότερος τρόπος για να εγκαταστήσετε το Leptonica είναι χρησιμοποιώντας το GitHub. Χρησιμοποιήστε την ακόλουθη εντολή για ομαλή εγκατάσταση
Εγκαταστήστε το Leptonica μέσω GitHub.
git clone --depth=1 https://github.com/mrdoob/three.js.git
Ανάγνωση και γραφή εικόνων
Η βιβλιοθήκη ανοιχτού κώδικα Leptonica δίνει στους προγραμματιστές τη δυνατότητα να διαβάζουν και να γράφουν εικόνες μέσα στις δικές τους εφαρμογές. Έχει προσφέρει πολλές σημαντικές μεθόδους για την ανάγνωση και τη γραφή εικόνων, όπως χαμηλού επιπέδου και υψηλού επιπέδου λειτουργίες για την ανάγνωση και τη γραφή δεδομένων εικόνας, λειτουργίες για την ανάγνωση και τη συγγραφή αρχείων με πολλαπλές εικόνες, αρχεία με ετικέτες TIFF ενσωματωμένα στην ανάγνωση. Υπάρχουν επίσης ορισμένες ειδικές εικόνες που υποστηρίζονται από τη βιβλιοθήκη.
Διαβάστε φωτογραφίες από τη Βιβλιοθήκη 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 Library
Η βιβλιοθήκη ανοιχτού κώδικα 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);