КРАТКО ОПИСАНИЕ библиотека 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, което обикновено е сравнимо с времето на компилация!
SCSS: Няколко полезни техники
На CSS - Препроцесори все по-популярни сред уеб - разработчици. Защо? Защото те ви позволяват да: Спестете време, приложете DRY принципа на CSS да се направи кода по-разбираеми В момента най-популярни са Препроцесори тази статия. Дали е по-добре - спорно, обаче, аз отидох до по-малко SCSS най-малко, защото има.
Двама гиганти в една и съща програма - Nvidia CUDA и MPI
Добре дошли habrovchane, в тази статия искам да говоря за сътрудничество между MPI на две технологии (mpich2) и NVIDIA CUDA. Акцентът искам да го направят до самата структура на програмата и определянето на посочените по-горе технологии за работа в една програма. И така poehalivЂ | За удобство, аз написах малко план, чрез който се движим: 1) обучение
Компютърно зрение в Java за Android. Преглед BoofCV библиотека
Вероятно всеки Android софтуер най-малко веднъж, че за написването нещо полезно с използването на компютърно зрение и разширената реалност. Някои от тях дори е написал здравей, дума, използвайки OpenCV, която все още преминаване към Android. За съжаление, ако искаме да напиша нещо сериозно, ние откриваме, че наборът от библиотеки с