КРАТКО ОПИСАНИЕ библиотека cimg

Добър ден!

През цялото това време силно привлича вниманието на обработка на изображения (алгоритми за компресия, филтри и т.н.). Уви, оказа се, че работата е почти не е свързана с никакви обработка на изображения или програмиране като цяло. Независимо от това, интерес към любимата бизнес не е намалял, и затова искам да ви запозная с наскоро открития за себе си CImg библиотеката.

структура на библиотеката


Библиотеката се състои от един-единствен файл заглавието CImg.h. който включва всички класове и функция CImg. Тази функция на библиотеката, какви са някои предимства:

  • няма нужда да се пре-съставяне на библиотеката, както CImg-код компилира (извинете тавтологията :-) при съставянето на основната програма, която включва CImg.h;
  • Не сложни зависимости: просто се обръщат CImg.h в проекта;
  • компилация се извършва "в движение": изпълним файл е включена само функционалността, която се използва в програмата. Тя ви позволява да създадете много компактни приложения;
  • класове и функции държави са вградени (inlined), което води до по-висока производителност по време на изпълнение на програмата;

CImg библиотека има следната структура:

  • Всички класове и функции, определени в библиотека пространство cimg_library името, което капсулира цялата функционалност на библиотеката и да се избегнат конфликти, които могат да се случат, когато добавите други заглавни файлове в проекта. Обикновено се използват само пространството от имена като стандарт:

    #include "CImg.h"
    използване на пространството от имена cimg_library;


  • Именно пространство cimg_library :: cimg определя набор от функции и променливи, използвани в библиотеката от ниско ниво;
  • Клас cimg_library :: CImg - основен клас библиотека, чиито случаи представлява субекта (изображение) до 4-измерна (от едномерна скаларна до 3-измерни комплекта пиксела), пиксела с бланкетни видове;
  • Клас cimg_library :: CImgList представя списъци cimg_library :: CImg изображения. Може да се използва, например, за съхранение на поредица от изображения (рамки.);
    Клас cimg_library :: CImgDisplay показва изображения или набор от изображения в графична среда. Ние спокойно можем да кажем, че този клас код е силно зависим от системата, но в действителност това не е грижа, защото програмист променливи на обкръжението са определени автоматично от CImg библиотека;
    Клас cimg_library :: CImgException (и неговите подкласове) библиотека използва за обработка на изключения, когато възникнат грешки. Изключения се обработват чрез опит улов (CImgException). Подкласове може точно да се определи вида на грешка;

    Познаването на тези четири класа е достатъчно, за да се насладите напълно на функционалност CImg-библиотеката.

    Здравейте, свят!


    Е, добре, това е казано много. Помислете за най-добър нагледен пример за това как елементарни написани на CImg.

    #include "CImg.h"
    използване на пространството от имена cimg_library;

    Int основната # 40; # 41; CImg IMG # 40; # 41 640,400,1,3 ;;
    img.fill # 40; 0 # 41 ;;
    грозен Чар лилаво # 91; # 93; = <255,0,255>;
    img.draw_text # 40; 100 100, "Hello World", лилаво # 41 ;;
    img.display # 40; "Моят първи CImg код" # 41 ;;
    връщане 0;
    >


    Нека разгледаме по-подробно всеки ред код:

    CImg включва библиотека заглавния файл

    използване на пространството от имена cimg_library;


    Декларирам основната функция на програмата


    Създаване на копие на изображението - IMG. Типове пиксела неподписан овъгляване. размер 640 * 400 * 1 пиксел (в този случай един казва, че изображението е плосък, а не триизмерна). Всеки пиксел има 3 канала - червено, зелено и синьо. Това се доказва от последния параметър на конструктора.


    Paint образа на черно ( "0" означава, черен)


    Декларирам променлива лилаво: това е цветът


    Ние се извлече от (100 100), за да се изобрази текста «Hello World» пурпурния цвят


    Ще покажем на изображението в прозореца на графиката със заглавие «Моето първо CImg код»

    img.display # 40; "Моят първи CImg код" # 41 ;;


    Както може да се види, CImg библиотека е лесен за използване, интуитивен имена метод. Докато по-горе код може да се запише по-компактно:

    #include "CImg.h"
    използване на пространството от имена cimg_library;

    Int основната # 40; # 41; Конст грозен Чар лилаво # 91; # 93; = <255,0,255>;
    CImg # 40; 640,400,1,3,0 # 41; .draw_text # 40; 100 100, "Hello World", лилаво # 41; .display # 40; "Моят първи CImg код" # 41 ;;
    връщане 0;
    >

    Надяваме се, че в бъдеще, ние анализираме няколко примера, има малко по-сложно!
    Уебсайт на проекта: cimg.sourceforge.net
    Благодаря ви за вниманието!

    Послепис

    • В Linux, компилиран с:
      г ++ -о здравей hello.cpp -O2 -L / ЮЕсАр / X11R6 / ИЪ -lm -lpthread -lX11 (може без -O2)
    • Съставител за дълго време (Linux Gentoo, PentiumV® Dual-Core CPU T4500 @ 2.30GHz):
      $ Време гр ++ -o здравей hello.cpp -O2 -L / ЮЕсАр / X11R6 / ИЪ -lm -lpthread -lX11
      реални 0m28.397s
      потребителски 0m27.991s
      сис 0m0.265s
      28 секунди (!) За Здравей, свят! ако е прекалено? Въпреки, че няма "-O2" три пъти по-бързо.
    • двоичен размер е 742K, което обикновено е сравнимо с времето на компилация!

КРАТКО ОПИСАНИЕ библиотека cimg

SCSS: Няколко полезни техники
На CSS - Препроцесори все по-популярни сред уеб - разработчици. Защо? Защото те ви позволяват да: Спестете време, приложете DRY принципа на CSS да се направи кода по-разбираеми В момента най-популярни са Препроцесори тази статия. Дали е по-добре - спорно, обаче, аз отидох до по-малко SCSS най-малко, защото има.

Двама гиганти в една и съща програма - Nvidia CUDA и MPI
Добре дошли habrovchane, в тази статия искам да говоря за сътрудничество между MPI на две технологии (mpich2) и NVIDIA CUDA. Акцентът искам да го направят до самата структура на програмата и определянето на посочените по-горе технологии за работа в една програма. И така poehalivЂ | За удобство, аз написах малко план, чрез който се движим: 1) обучение

КРАТКО ОПИСАНИЕ библиотека cimg

Компютърно зрение в Java за Android. Преглед BoofCV библиотека
Вероятно всеки Android софтуер най-малко веднъж, че за написването нещо полезно с използването на компютърно зрение и разширената реалност. Някои от тях дори е написал здравей, дума, използвайки OpenCV, която все още преминаване към Android. За съжаление, ако искаме да напиша нещо сериозно, ние откриваме, че наборът от библиотеки с

КРАТКО ОПИСАНИЕ библиотека cimg

КРАТКО ОПИСАНИЕ библиотека cimg