Leptonica
C API untuk Pemprosesan Imej Lanjutan
Pustaka Sumber Terbuka C membolehkan pembangun melakukan operasi pemprosesan imej lanjutan seperti penskalaan imej, terjemahan, putaran, ricih dalam apl mereka sendiri.
Leptonica ialah pustaka pemprosesan imej dan analisis imej sumber terbuka C yang sangat berguna untuk bekerja dengan imej dokumen serta imej semula jadi. Perpustakaan ini sangat stabil dan telah menyertakan sokongan untuk pelbagai format imej seperti JPEG, PNG, TIFF, WebP, JP2, BMP, PNM, PS, GIF dan PDF. Anda boleh melakukan operasi membaca dan menulis dengan mudah pada senarai format imej yang disediakan. Perpustakaan kebanyakannya menggunakan pendekatan berorientasikan objek dan satu set prinsip reka bentuk yang menjadikan kod selamat, mudah alih dan telus.
Perpustakaan menyediakan sokongan untuk beberapa operasi penting dan satu set alat untuk pemprosesan imej serta analisis imej. Perpustakaan menyokong operasi seperti penskalaan imej, terjemahan, putaran, ricih, Transformasi imej dengan perubahan dalam kedalaman piksel, morfologi skala perduaan dan kelabu, topeng Pixelwise, pengadunan, peningkatan, operasi aritmetik dan banyak lagi. Ia juga menyokong beberapa utiliti penting seperti untuk mengendalikan tatasusunan jenis data berkaitan imej seperti pixa, boxa, pta dan em> lain.
Ia juga telah menyediakan fungsi untuk membaca dan menulis fail yang mempunyai beberapa imej dan menulis fail dengan tag TIFF khas yang dibenamkan dalam pengepala. Ia juga membenarkan pembangun menulis fail PostScript dalam pelbagai format seperti transformasi kepada PDF, imej raster dan menukar fail PostScript kepada satu set imej termampat.
Bermula dengan Leptonica
Cara paling mudah untuk memasang Leptonica adalah dengan menggunakan melalui GitHub. Sila gunakan arahan berikut untuk pemasangan yang lancar
Pasang Leptonica melalui GitHub.
git clone --depth=1 https://github.com/mrdoob/three.js.git
Membaca dan menulis gambar
Pustaka sumber terbuka Leptonica memberikan pembangun perisian keupayaan untuk membaca dan menulis imej di dalam aplikasi mereka sendiri. Ia telah menyediakan beberapa kaedah penting untuk membaca dan menulis imej seperti fungsi peringkat rendah dan tinggi untuk membaca dan menulis data imej, fungsi untuk membaca dan menulis fail dengan berbilang imej, fail dengan tag TIFF yang dibenamkan dalam pengepala, membaca fail JPEG. , membaca dan menulis fail PostScript dan beberapa fungsi lain. Terdapat beberapa pengekod khusus yang turut disokong oleh perpustakaan.
Baca Imej melalui Perpustakaan 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();
Penskalaan Imej melalui Perpustakaan C
Pustaka sumber terbuka Leptonica telah menyediakan sokongan lengkap untuk menskala imej di dalam aplikasi C mereka sendiri dengan mudah. Terdapat banyak fungsi penskalaan yang disediakan oleh Leptonica, seperti penskalaan atas menggunakan interpolasi linear, penskalaan bawah dengan menggunakan subsampling, atau dengan pemetaan kawasan, pensampelan, penskalaan interpolasi linear 2x dan 4x, penskalaan integer RGB kepada kelabu atau binari, dan banyak lagi. Selain itu, penskalaan yang sangat pantas pada imej binari juga ditawarkan, dan berguna untuk analisis imej teks binari yang diimbas.
Putaran Imej yang Lebih Baik melalui Perpustakaan C
Pustaka sumber terbuka Leptonica telah menyediakan sokongan untuk memutar imej di dalam aplikasi C mereka sendiri. Terdapat banyak cara untuk mencapai operasi putaran imej, seperti putaran mengikut ricih, putaran mengikut pemetaan kawasan, putaran khas sebanyak 90, 180 atau 270 darjah, putaran sama ada 2 atau 3 ricih dan banyak lagi.
Putaran Imej 180 Darjah melalui Perpustakaan 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);