Witam, tym razem szukam wszedzie szczescia ale nigdzie nie moge sie doszukac odpowiedzi. Otoz tworze prosta aplikacje, ktora operuje na czarno bialym obrazie. Konkretnie potrzebne mi jest dobrac sie do kazdego pixela aby pobrac wartosc czy pixel jest bialy czy czarny. Cala metoda wyglada tak:
Do metody skeletonization: odwoluje sie poprzez nacisniecie przycisku:Kod:- (NSImage *)skeletonization: (NSImage *)image { int x = 0, y = 0; NSBitmapImageRep *bitmapImageRep = [[NSBitmapImageRep alloc] initWithData:[image TIFFRepresentation]]; NSColor *myColor = [NSColor blackColor]; NSColor *myColor2 = [NSColor whiteColor]; [myColor set]; [myColor2 set]; for (x=0; x<=[bitmapImageRep pixelsWide]; x++) { for (y=0; y<=[bitmapImageRep pixelsHigh]; y++) { [bitmapImageRep setColor:myColor atX:x y:y]; } } [myColor release]; [myColor2 release]; NSImage *producedImage = [[NSImage alloc] init]; [producedImage addRepresentation:bitmapImageRep]; [bitmapImageRep release]; return [producedImage autorelease]; }
Problem w tym, ze dziala to strasznie wolno. Potrzeba okolo 2, 3 sekund aby caly obrazek przerobic na czarny. To jest tylko przyklad, ktorym chcialem sprawdzic czy bedzie to dzialac. Dziala ale jak pisalem wolno. Ostatecznie bedzie tam z 6 iteracji i kilka warunkow do sprawdzenia wiec domyslam sie juz, ze przerobienie obrazka o wymiarach, dajmy na to 300x500 potrwa tydzien.Kod:NSImage *myImage = [NSImage imageNamed:@"finger1.jpg"]; NSImage *newImage = [self skeletonization:myImage]; [oryginalImage setImage:myImage]; [skeletonizedImages setImage:newImage];
Poczytalem dokumentacje i postanowilem uzyc CIImage, ktore uzywa karty grafiki do operacji na obrazkach, ale nie moge sie tam dobrac do pixela. Wyczytalem, ze tak od tak sobie nie mozna sie dobrac do pixela bo jest to bardziej "przepis" na obrazek a nie konkretna informacja o nim. Ale jak sie dobrac do treci obrazka to dalej nie wiem. Tworzenie reprezentacji obrazka sprowadza mnie do problemu: dziala ale wolno. Wiec jesli ktos ma pomysl na to jak sie choc odrobine za to zabrac to bede wdzieczny.
Acha poczytalem jeszcze o jednym - bitmapData ale z dokumentacji nie wychodzi mi uzycie tej metody...
Kolejna rzecz to getPixel. Tutaj mam problem z (NSUInteger [])p. Reszte rozumie ale do czego jest zmienna p?



LinkBack URL
About LinkBacks
Cytuj