Temat 7. CoreImage Gra w kulki - part 4 Wymagana wiedza wstępna

Transkrypt

Temat 7. CoreImage Gra w kulki - part 4 Wymagana wiedza wstępna
Temat 7.
CoreImage
Gra w kulki - part 4
Wymagana wiedza wstępna:
1) Student musi
1) Umieć stworzyć projekt aplikacji konsolowej w XCode z wykorzystaniem
Objective-C
2) Umieć skompilować i uruchomić program w XCode
3) Skorzystać z podstawowych klas i funkcji Objective-C
4) Nauczyć się zasad wywoływania metod w Objective-C
5) Znać pojecie wskaźnika
6) Umieć tworzyć hierarchę klas w Objective-C
7) Umieć wykorzystywać późne wywołanie metod w Objective-C
8) Umieć korzystać z kolekcji
9) Umieć tworzyć własne inicjalizatory
10) Tworzyć referencje do obiektów znajdujących się na widoku
11) Obsługiwać domyślne interakcje z obiektami za pomocą własnych
metod
12) Znać zasady korzystania z @property i @synthesize
13) Rozumieć ideę MVC - model - view - controller
14) Rozumieć ideę delegata dla widoku (kontrolera)
2) Student powinien
1) Znać jezyk Java lub C# lub C++
Cel dydaktyczny
1) Student musi
1) Umieć korzystać z dodatkowych Frameworków
2) Umieć korzystać z Frameworka CoreImage
3) Tworzyć i konfigurować filtry CoreImage
2) Student powinien
1) Rozumieć kwestie związane z wydajnością filtrów CoreImage
3) Student może
1) Umieć korzystać z frameworka AVFoundation w zakresie obróbki sygnału
Video z kamer urządzenia IOS
Zakres tematyczny wykładu i laboratorium
Niniejsze zajęcia wprowadzają znajomość zaawansowanej edycji obrazu za pomocą
frameworka CoreImage. Pokazują również podejście do kwestii operacji na zasobach
multimedialnych (wideo).
• Architektura CoreImage .
• Źródła danych obsługiwane przez CoreImage
• Core Graphics,
• Core Video,
• Image I/O frameworks,
• Renderowanie grafiki przez CoreImage z użyciem GPU i CPU
• Obiektowe API CoreImage
• Funkcjonalności CoreImage
• Wbudowane filtry
• Detekcja cech obrazu
Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 1/3
•
•
•
•
•
•
•
Automatyczna korekta obrazu
Łańcuchowanie filtrów
Kombinacje filtrów
Przegląd filtrów CoreImage
Przegląd źródeł obrazu i użycie różnych źródeł w łańcuchach filtrów
CI Face Detection - Wykrywanie twarzy na obrazach,
Automatyczne poprawianie jakości obrazów
Załączniki
1. Prezentacja_7.pdf - slajdy prezentacji wykładu
Zadania na laboratorium
Zadanie 1.
Dodaj do klasy kulka metodę rotate, wykorzystującą CoreImage do zmienienia koloru kulki
o pewne przesunięcie palety. Przy każdym odbiciu kulki wywołaj tą metodę
Podpowiedzi
1) Pamiętaj o dodaniu do projektu biblioteki CoreImage.framework
Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 2/3
2) Aby zmienić wyświetlany przez UIImageView obraz, należy nadpisać właściwość image
iv.image= [self imageWithImage:iv.image rotatedByHue:1];
3) Dodaj funkcję pomocniczą imageWithImage:rotatedByHue: wykorzystującą filtry
CoreImage do przesunięcia kolorów.
- (UIImage*) imageWithImage:(UIImage*) source rotatedByHue:(CGFloat) deltaHueRadians;
{
CIImage *sourceCore = [CIImage imageWithCGImage:[source CGImage]];
CIFilter *hueAdjust = [CIFilter filterWithName:@"CIHueAdjust"];
[hueAdjust setDefaults];
[hueAdjust setValue: sourceCore forKey: @"inputImage"];
[hueAdjust setValue: [NSNumber numberWithFloat: deltaHueRadians] forKey: @"inputAngle"];
CIImage *resultCore = [hueAdjust valueForKey: @"outputImage"];
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef resultRef = [context createCGImage:resultCore fromRect:[resultCore extent]];
UIImage *result = [UIImage imageWithCGImage:resultRef];
CGImageRelease(resultRef);
return result;
}
Zadania samodzielne.
Zadanie 1.
Zmień również kolor tła w momencie odbicia kulki.
Zadanie 2.
Wyświetlaj aktualny wynik na czerwono, zanim nie przekroczy dotychczasowego najlepszego
wyniku.
Zadanie samodzielne *
Zadanie 1.
Zainicjalizuj pierwszy kolor kulki za pomocą zdjęcia wykonanego kamerą urządzenia w momencie
startu gry.
Podpowiedzi
1) Wykorzystaj AVCaptureImageOutput
[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:
^(CMSampleBufferRef imageSampleBuffer, NSError *error)
{
NSData *imageData = [AVCaptureStillImageOutput
jpegStillImageNSDataRepresentation:imageSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];
[arrCaptures addObject:image];
[image release];
}];
Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 3/3