01 PO CImg 2013id 3069

background image

PRZETWARZANIE OBRAZÓW : Techniki programowania przy użyciu biblioteki CImg

I.

© P.Ślusarczyk

Strona 1 z 3

1.

Środowisko programistyczne

a. Dev-C++:

http://www.bloodshed.net/devcpp.html

b. Microsoft Visual C++ Express:

http://www.microsoft.com/visualstudio/eng/

c. CImg:

http://cimg.sourceforge.net/

i.

(wersja 1.2.7 dla Dev C++

ii.

wersja najnowsza dla Visual C++

d. ImageMagick:

http://www.imagemagick.org/script/index.php

2.

Konfiguracja projektu w środowisku DevC++

a. Utworzenie pustego projektu

'Empty Project'

b. Dołączenie biblioteki ‘libgdi32.a’ (biblioteka pakietu Dev-C++):

'Projekt->Opcje Projektu->Parametry->Konsolidator
->Dodaj Plik'

c. Wskazanie lokalizacji pliku ‘CImg.h’ jako katalogu plików nagłówkowych:

'Projekt->Opcje Projektu-> Pliki/Katalogi
-> Katalogi Plików Nagłówkowych'

3.

Konfiguracja projektu w środowisku Visual C++ 2012 Express

a. Utworzenie projektu typu: '

Win32 Console Application'

i.

W okienku '

Win32 Application Wizard'

wybranie zakładki

'

Application Settings'

ii.

W sekcji '

Application type'

należy wybrać

'Console

Application'

iii.

W sekcji '

Additional options'

należy wybrać

'Empty project'

b. Wskazanie lokalizacji pliku ‘CImg.h’ jako katalogu plików nagłówkowych:

'Project->Properties ...->Configuration Properties
->VC++ Directories->Include Directories'

c. Dodawanie plików do projektu:

Project->Add New Item ...

-> C++ File (.cpp)

d. Kompilacja:

'Build/Build Solution (F7)'

e. Uruchamianie:

'Debug/Start Without Debugging (Crtl-F5)'

1.

Przeanalizuj działanie poniższych programów:

Wydruk 1. Rozmycie obrazu

#include "CImg.h"
using namespace cimg_library;

int main()
{

CImg<unsigned char> image("lena.pgm");
image.display("Oryginał");
image.blur(2.5);
image.display("Rozmyty"); // UWAGA: Obraz jest normalizowany

return 0;

}

Wydruk 2. Rozmycie obrazu

#include "CImg.h"
using namespace cimg_library;

int main()
{

CImg<unsigned char> image("lena.pgm");
CImgDisplay original_disp(image,"Oryginał");
image.blur(2.5);

CImgDisplay transformed_disp(image,"Rozmyty",3);
while (!original_disp.is_closed || !transformed_disp.is_closed)

{}

return 0;

}

background image

PRZETWARZANIE OBRAZÓW : Techniki programowania przy użyciu biblioteki CImg

I.

© P.Ślusarczyk

Strona 2 z 3

Wydruk 3a. (Negatyw obrazu monochromatycznego - dla wersji 1.2.7. + Dev C++)

#include "CImg.h"
using namespace cimg_library;

int main()
{

CImg<unsigned char> image("lena.pgm");

// image(i,j) gdzie: i - numer kolumny
//

j - numer wiersza

for(unsigned int i=0; i<image.dimx(); i++)

for(unsigned int j=0; j<image.dimy(); j++)

image(i,j)=255-image(i,j);

CImgDisplay im_display(image,"Negatyw",3);
while (!im_display.is_closed())

{}

return 0;

}

Wydruk 3a. (Negatyw obrazu monochromatycznego - dla wersji 1.4.9 + Visual C++)

#include

"CImg.h"

using namespace

cimg_library;

int

main()

{

CImg<

unsigned char

> image(

"lena.pgm"

);

// image(i,j) gdzie:

// i - numer kolumny

// j - numer wiersza

for

(

int

i=0; i<image.width(); i++)

for

(

int

j=0; j<image.height(); j++)

image(i,j)=255-image(i,j);

CImgDisplay im_display(image,

"Negatyw"

,3);

while

(!im_display.is_closed())

{}

return

0;

}

Wydruk 4a. (Odbicie lustrzane obrazu - dla wersji 1.2.7. + Dev C++)

#include "CImg.h"
using namespace cimg_library;

int main()
{

CImg<unsigned char> image("lena.pgm");
CImgDisplay orginal_disp(image,"Oryginał");

for(unsigned int i=0; i<image.dimx()/2; i++)

for(unsigned int j=0; j<image.dimy(); j++){

unsigned char temp = image(i,j);
image(i,j) = image(image.dimx()-i,j);
image(image.dimx()-i,j) = temp;

}

CImgDisplay transf_disp(image,"Odbicie lustrzane",3);
while (!orginal_disp.is_closed || !transf_disp.is_closed)

{}

return 0;

}

Wydruk 4b. (Odbicie lustrzane obrazu - dla wersji 1.4.9 + Visual C++)

#include

"CImg.h"

using namespace

cimg_library;

int

main()

{

CImg<

unsigned char

> image(

"lena.pgm"

);

CImgDisplay orginal_disp(image,

"Oryginał"

);

for

(

int

i=0; i<image.width()/2; i++)

for

(

int

j=0; j<image.height(); j++){

unsigned char

temp = image(i,j);

image(i,j) = image(image.width()-i,j);

image(image.width()-i,j) = temp;

}

CImgDisplay transf_disp(image,

"Odbicie lustrzane"

,3);

while

(!orginal_disp.is_closed() || !transf_disp.is_closed())

{}

return

0;

}

background image

PRZETWARZANIE OBRAZÓW : Techniki programowania przy użyciu biblioteki CImg

I.

© P.Ślusarczyk

Strona 3 z 3

Wydruk 5a. (Gradient - dla wersji 1.2.7. + Dev C++ )

#include "CImg.h"
using namespace cimg_library;

int main()
{

CImg<unsigned char> obraz(256,256,1); // monochromatyczny

for(unsigned int i=0; i<obraz.dimx(); i++)

for(unsigned int j=0; j<obraz.dimy(); j++)

obraz(i,j) = i;

CImgDisplay im_display(obraz,"Gradient",3);
while (!im_display.is_closed())

{}

return 0;

}

Wydruk 5b. (Gradient - dla wersji 1.4.9 + Visual C++))

#include

"CImg.h"

using namespace

cimg_library;

int

main()

{

CImg<

unsigned char

> obraz(256,256,1);

// monochromatyczny

for

(

int

i=0; i<obraz.width(); i++)

for

(

int

j=0; j<obraz.height(); j++)

obraz(i,j) = i;

CImgDisplay im_display(obraz,

"Gradient"

,3);

while

(!im_display.is_closed())

{}

return

0;

}

2.

Wyreguluj ustawienia obrazu monitora wykorzystując program z wydruku 5.

3.

Napisz programu generujący obraz złożony z 8,16 lub 32 pionowych pasów
o zwiększających się poziomach jasności od 0 do 255 (pasma Macha).

4.

Napisz program prezentujący zjawisko jednoczesnego kontrastu.


Wyszukiwarka

Podobne podstrony:
01-PO-CImg-2013
07 PO Morfologia 2013id 7065
03 PO Geometria 2013id 4609 Nieznany (2)
05 PO Filtracja 2013id 5967 Nieznany (2)
00 PO Wprowadzenie 2013id 2109
01A PO GIMP 2013id 3293 Nieznany (2)
06 PO FiltrWidmowa 2013id 6520
04 PO Punktowe 2013id 5305
07 PO Morfologia 2013id 7065
[01 PO] Bo Yin Ra Ksiega sztuki krolewskiej
01 po co ewaluacja m w kowalski
przewodnik po zmianach VAT 01,07,2015
PO lab 01
2 01 Państwa krzyżowców po 1096r
PO, 01 podstawy
01 Biegus A i inni Zagrozenie awaryjne i wzmocnienie dachu hali po wybuchu pieca elektrycznego
01 Film angielski po drugiej wojnie światowej

więcej podobnych podstron