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