Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

CImg biblioteka


1. Opšte informacije i dostupnost

1.1. Šta je CImg biblioteka?



CImg biblioteka je open source C + + alat za obradu slike.

Ona uglavnom sadrži (veliko) jedno zaglavlje datoteke CImg.h obezbeđujući skup C + + klase i funkcije koje se mogu koristiti u Vašim sopstvenim izvorima, za učitavanje / čuvanje, upravljanje / obradu i prikazivanje generičke slike. To je zapravo vrlo jednostavan i prijatan alat za kodiranje obrade slike u C + +: Samo uključite CImg.h zaglavlje datoteke, i vi ste spremni da rukujete slikama u C + + programima.

1.2. Koje platforme su podržane?



CImg je dizajniran sa prenosivosti na umu. Redovno se testira na različitim arhitekturama i kompajlerima, a takođe treba da radi na bilo kom pristojnom operativnom sistemu koji ima pristojan C + + kompajler. Pre svakog puštanja CImg biblioteka je sastavljena pod ovim različitim konfiguracijama:
  • PC Linux 32 bita, sa g++.
  • PC Windows 32 bita, sa Visual C++ 6.0.
  • PC Windows 32 bita, sa Visual C++ Express Edition.
  • Sun SPARC Solaris 32 bita, sa g++.
  • Mac PPC sa OS X i g++.
CImg ima minimalan broj zavisnosti. U svojoj minimalnoj verziji, može biti sastavljena samo sa standardnim zaglavljem C + +. U svakom slučaju, ima zanimljivih dodatnih mogućnosti i može da koristi spoljne biblioteke za efikasnije izvršavanje određenih zadatka (na primer Fourier Transform računanje pomoću FFTV)

1.3. Kako se CImg distribuira?



CImg biblioteka se slobodno distribuira kao kompletan .zip kompresovan paket, koji se nalazi na Sourceforge servers .
Paket je distribuiran pod CeCILL licencom .

Ovaj paket sadrži: CImg biblioteka je prilično lagana biblioteka koja je laka za održavanje (zbog posebne strukture), i na taj način ima brz ritam distribucije. Nova verzija paketa CImg se objavljuje otprilike na svaka tri meseca.

1.4. Koje ljude interesuje CImg?



CImg biblioteka je biblioteka za obradu slika,prvenstveno namenjena za kompjuterske naučnike ili studenate koji rade u oblastima obrade slika ili kompjuterske vizije, a znajući osnove C++. Kao biblioteka je zgodna i stvarno jednostavna za korišćenje, može je koristiti bilo koji programer kome je potrebna povremena alatka za rad sa slikama u C + +, jer još uvek ne postoji standardna biblioteka za ovu namenu.

1.5. Koje su specifičnosti CeCILL licence?



CeCILL licenca reguliše korišćenje CImg biblioteke. To je open source licenca koja vam daje pravo da pristupite, koristite, menjate i raspodeljujete izvorni kod, pod određenim uslovima. Postoje dve različite varijante CeCILL dozvole koje se koriste za CImg (naime CeCILL i CeCILL-C, obe su open source), što odgovara različitim ograničenjima izvornih datoteka:
  • CeCILL-C licenca je najpopustljivija, skoro kao i GNU LGPL licenca,a odnosi se samo na glavnu biblioteku datoteke CImg.h . U suštini, ova licenca dozvoljava da se CImg.h koristi u zatvorenom izvornom proizvodu bez forsiranja da raspodeljujete čitav izvorni kod softvera. U svakom slučaju, ako menjate izvorni fajl CImg.h , neko mora da redistribuira izmenjenu verziju fajla koji mora biti regulisan istom CeCILL-C licencom .

  • CeCILL licenca važi za sve ostale fajlove (izvorne primere, plug-in-ove i dokumentaciju) paketa CImg biblioteke, i slična je (čak i kompatibilna) GNU GPL licenci. Ne dozvoljava upotrebu tih fajlova u zatvorenim izvornim proizvodima.
Možete da pročitate kompletne opise CeCILL-C i CeCILL licenci pre oslobađanja softvera zasnovanog na CImg.

1.6. Ko stoji iza CImg?



Dejvid Čamperl je započeo CImg na početku svoje doktorske disertacije, u oktobru 1999. On je još uvek glavni koordinator projekta. Od prvog izdanja na Sourceforge, povećao se broj saradnika. Zbog vrlo jednostavane i kompaktne forme biblioteke, davanje doprinosa je veoma jednostavno i može da se ubrzano integriše u podržanim izdanjima. Spisak saradnika može se naći na naslovnoj strani.

2. Srodna pitanja za C + +

2.1 Koji nivo C + + znanja je potreban za korišćenje CImg?



CImg biblioteka je dizajnirana korišćenjem C + + šablona i objektno orijentisane programske tehnike, ali na veoma pristupačnom nivou. Postoje samo javne klase bez ikakvog izvođenja (baš kao C strukture) i tu je najviše jedan šablonski parametar za svaku CImg klasu ( definisanje vrste piksela slike). Dizajn je jednostavan, ali čist, što čini biblioteku dostupnom čak i za one koji nisu profesionalni C + + programeri, a predlažući jake produžne mogućnosti za C + + stručnjake.

2.2 Kako koristiti CImg u mom C + + programu?



Uglavnom, morate da dodate ove dve linije u vašem C + izvorni kodu, kako bi mogli da radite sa CImg slikama:
#include "CImg.h" using namespace cimg_library;

2.3 Zašto je CImg u potpunosti sadržan u jednom naslovnom fajlu?



Ljudi su često iznenađeni da vide da se kompletan kod biblioteke nalazi u jednom (velikom) naslovnom C + + fajlu CImg.h .Postoje dobri praktični i tehnički razlozi zašto je to tako. Neki argumenti su navedeni da opravdaju takav pristup, tako (nadam se) da nećete misliti da je ovo čudan C + + projekat CImg biblioteke:
  • Prvo, biblioteka je zasnovana na šablonima tipova podataka (fotografije sa tipom generičkih piksela), što znači da je programer slobodan da odluči koji tip slike instanciara u svom kodu. Čak i ako otprilike postoji ograničen broj potpuno podržanih tipova (u osnovi,"atomski" tipovi C + + unsigned char, int, float, ...),nije zamislivo da prethodno kompajliramo klase i funkcije biblioteke za sve moguće atomske tipove podataka, jer mnoge funkcije i metode mogu da imaju dva ili tri argumenta koji imaju različite parametre šablona. To zapravo znači veliki broj mogućih kombinacija. Veličina objekta binarnog fajla generisanog da pokrije sve moguće slučajeve bi bila ogromna. Da li je STL biblioteka unapred sastavljena? Ne, nije ni CImg. CImg ne koristi klasični .cpp i .h mehanizam baš kao ni STL. Arhitekture C + + osnovnog šablona biblioteke su nešto posebno u tom smislu. To je dokazana tehnička činjenica.

  • Drugo, zašto CImg nema više datoteka zaglavlja, baš kao što ima STL (na primer po jedan za svaku klasu)? To bi bilo moguće, naravno. Postoje samo 4 klase u CImg, dve najvažnije su CImg<T> i CImgList<T> i respektivno predstavljaju sliku i kolekciju slika. Ali, za razliku od STL biblioteke, ova dve CImg klase su međusobno jako zavisne. Svi CImg algoritmi zapravo nisu definisani kao posebne funkcije koje deluju na kontejnerima (kao što STL radi sa svojim zaglavljem <algorithm>), ali su direktno metode slike i klase za prikupljanje slika. Ova međuzavisnost praktično znači da će Vam nesumnjivo trebati ove dve glavne klase u isto vreme, ako koristite CImg. Ako su definisane u odvojenim naslovnim fajlovima, bićete primorani da obuhvatite oba. Šta je onda korist toga? Nema koristi.
    Što se tiče druge dve klase: Možete da onemogućite treću najvažniju klasu CImgDisplay CImg biblioteke, postavljanjem kompilacije macro cimg_display na 0, izbegavajući tako sastavljanje ove klase, ako ne koristite mogućnosti ekrana CImg u Vašem kodu. Ali da budem iskren, to je prilično mala klasa i ovo ne štedi vreme kompilacije. Poslednja i četvrta klasa je CImgException, koja je samo nekoliko redova duga i očigledno potrebna u skoro svim metodama CImg. Njeno uključivanje je obavezno.
    Kao posledica toga, imati jednu datoteku zaglavlja umesto nekoliko, je samo način da se izbegne uključujivanje svih, bez ikakvih posledica po kompilaciju.To je dobar tehnički i praktični razlog da se ovako uradi.

  • Treće, imajući jedan fajl zaglavlja ima dosta prednosti: Jednostavnost za korisnika, i za programere (održavanje je u stvari lakše). Pogledajte CImg.h datoteku, izgleda kao haos na prvi pogled, ali je u stvari veoma dobro organizovana i struktuirana. Pronalaženje delova koda u CImg funkciji ili metodi je posebno lako i brzo. Takođe, šta mislite o činjenici da problemi oko instalacije biblioteke samo nestanu? Samo donesite CImg.h sa sobom, stavite ga u svom izvornom direktorijumu, i biblioteka je spremna!
Priznajem da vreme kompilacije programa zasnovanog na CImg može ponekad biti dugo, ali nemojte misliti da je to zbog činjenice što koristite jedno zaglavlje fajla. Korišćenje više zaglavlja datoteka neće ništa organizovati, jer Vam trebaju svi.Jedino rešenje da se ubrza vreme kompilacije bi bilo da imate prethodno kompajlirane biblioteke objekata, ali to nije uopšte moguće, zbog previše generičke prirode biblioteke.




Published (Last edited): 17-09-2012 , source: http://cimg.sourceforge.net/reference/group__cimg__faq.html