SCURTĂ DESCRIERE Biblioteca cimg

Buna ziua!

Toate în timp ce a atras foarte mult atenția de prelucrare a imaginii (algoritmi de compresie, filtre, etc.). Din păcate, sa dovedit că munca este aproape nu este asociat cu nici o procesare de imagine sau de programare, în general. Cu toate acestea, interesul pentru afaceri favorit nu a scăzut, și așa vreau să vă prezint recent deschis pentru ei înșiși biblioteca CImg.

Structura bibliotecii


Biblioteca este format dintr-un singur fișier antet CImg.h. care include toate clasele și funcția CImg. Această caracteristică a bibliotecii, care sunt câteva avantaje:

  • nu este nevoie de a pre-compila biblioteca, ca compilează CImg-cod (scuzați tautologia :-) în timpul compilării programului principal, care include CImg.h;
  • dependențe complexe: rândul său, pur și simplu CImg.h în proiect;
  • compilare are loc „on the fly“: un fișier executabil este inclus doar funcționalitatea care este utilizată în program. Acesta vă permite să creați aplicații foarte compacte;
  • clase membre și funcțiile sunt încorporate (inline), ceea ce conduce la o productivitate mai mare în timpul execuției programului;

CImg Biblioteca are următoarea structură:

  • Toate clasele și funcțiile definite în spațiul de nume cimg_library bibliotecă care încapsulează toate funcționalitatea bibliotecii și pentru a evita conflictele care s-ar putea întâmpla atunci când adăugați alte fișiere antet în proiect. De obicei, utilizați numai spațiul de nume ca un standard:

    #include "CImg.h"
    using namespace cimg_library;


  • Namespace cimg_library :: cimg definește un set de funcții de nivel scăzut și variabilele utilizate în bibliotecă;
  • Class cimg_library :: CImg - clasa biblioteca de bază, ale cărei instanțe reprezintă entitatea (imagine), până la un 4-dimensional (de la unidimensională scalare la seturi de 3-dimensionale de pixeli), pixeli cu tipuri stereotipă;
  • Clasa cimg_library :: CImgList prezintă liste cimg_library :: imagini CImg. Poate fi folosit, de exemplu, pentru stocarea unei secvențe de imagini (cadre.);
    Clasa cimg_library :: CImgDisplay afișează imagini sau seturi de imagini într-un mediu grafic. Putem spune cu siguranță că acest cod de clasă este foarte dependentă de sistem, dar, de fapt, nu este un programator de îngrijire, deoarece Variabilele de mediu sunt setate automat de CImg-bibliotecă;
    Clasa cimg_library :: CImgException (și subclase) biblioteca utilizat pentru a gestiona excepții atunci când apar erori. Excepțiile sunt procesate prin captură încerca (CImgException). Subclasele poate determina cu exactitate tipul de eroare;

    Cunoașterea acestor patru clase este suficient pentru a se bucura pe deplin de funcționalitatea CImg-bibliotecă.

    Bună ziua, lume!


    Ei bine, a fost spus destul de mult. Luați în considerare cel mai bun exemplu ilustrativ al modului în care programul elementar scris folosind CImg.

    #include "CImg.h"
    using namespace cimg_library;

    int main # 40; # 41; CImg img # 40; # 41 640,400,1,3 ;;
    img.fill # 40; 0 # 41 ;;
    unsigned char mov # 91; # 93; = <255,0,255>;
    img.draw_text # 40, 100100, "Hello World", violet # 41 ;;
    img.display # 40; "Primul meu cod CImg" # 41 ;;
    return 0;
    >


    Să ne gândim în detaliu fiecare linie de cod:

    CImg includ biblioteca de fișiere antet

    using namespace cimg_library;


    Declarați funcția principală a programului


    Creați o copie a imaginii - img. tip unsigned char pixeli. dimensiunea 640 * 400 * 1 pixel (în acest caz, se spune că imaginea este plat, nu tri-dimensională). Fiecare pixel are 3 canale - roșu, verde și albastru. Acest lucru este demonstrat de ultimul parametru constructorului.


    Vopseaua imaginea de negru ( „0“ înseamnă negru)


    Declara o variabilă violet: este culoarea


    Noi derivă din (100100) imaginii textul «Hello World» culoarea violet


    Vom arăta imaginea în fereastra grafica cu titlul «Primul meu CImg cod»

    img.display # 40; "Primul meu cod CImg" # 41 ;;


    După cum se poate observa, CImg biblioteca este ușor de utilizat, nume de metode intuitive. În timp ce codul de mai sus poate fi scris mai compact:

    #include "CImg.h"
    using namespace cimg_library;

    int main # 40; # 41; const unsigned char mov # 91; # 93; = <255,0,255>;
    CImg # 40; 640,400,1,3,0 # 41; .draw_text # 40, 100100, "Hello World", violet # 41; .display # 40; "Primul meu cod CImg" # 41 ;;
    return 0;
    >

    Să sperăm că, în viitor, vom analiza câteva exemple, au un pic mai complicat!
    Website-ul proiectului: cimg.sourceforge.net
    Vă mulțumesc pentru atenție!

    P.S.

    • În Linux, compilat cu:
      g ++ o- salut hello.cpp -O2 -L / usr / X11R6 / lib -lm -lpthread -lX11 (se poate face fără -O2)
    • Compilat pentru o lungă perioadă de timp (Linux Gentoo, PentiumV® Dual-Core CPU T4500 @ 2.30GHz):
      $ Timp g ++ o- salut hello.cpp -O2 -L / usr / X11R6 / lib -lm -lpthread -lX11
      0m28.397s reale
      0m27.991s utilizator
      0m0.265s sys
      28 de secunde (!) Pentru Hello World! dacă este prea? Deși nu „-O2“ de trei ori mai repede.
    • dimensiunea binară este 742K, care este, în general, comparabil cu timpul de compilare!

SCURTĂ DESCRIERE Biblioteca cimg

SCSS: un cuplu de tehnici utile
CSS-ul - preprocesoare din ce în ce mai populare în rândul web - dezvoltatori. De ce? Pentru că ei vă permit să: Economisiți timp, se aplică principiul DRY la CSS pentru a face codul mai ușor de citit în prezent cele mai populare sunt preprocesoare acest articol. Este mai bine - un punct de discuție, cu toate acestea, m-am dus la mai SCSS, cel puțin pentru că există.

Doi giganți în același program - Nvidia CUDA și MPI
Bine ai venit habrovchane, în acest articol vreau să vorbesc despre cooperarea între două tehnologii MPI (mpich2) și NVIDIA CUDA. Accentul vreau să-l fac la însăși structura programului și stabilirea tehnologiilor de mai sus pentru a lucra într-un singur program. Și astfel poehalivЂ | Pentru comoditate, am scris un pic plan prin care ne deplasăm: 1) Formarea

SCURTĂ DESCRIERE Biblioteca cimg

viziune de calculator în Java pentru Android. Prezentare generală bibliotecă BoofCV
Probabil că fiecare Android Software-ul gândit cel puțin o dată despre scrierea ceva util cu utilizarea de viziune de calculator și realitate augmentată. Unii chiar a scris salut, cuvânt folosind OpenCV, care încă portat pentru Android. Din păcate, dacă vrem să scrie ceva serios, descoperim că setul de biblioteci cu

SCURTĂ DESCRIERE Biblioteca cimg

SCURTĂ DESCRIERE Biblioteca cimg