Я работаю над своим первым приложением Mac OSX Cocoa для 10.5+, где у меня есть CVImageBufferRef (захваченный с помощью QTKit), мне нужно перенести этот образ через TCP Socket в клиентское приложение. Клиентскому приложению нужны значения RGB. Вот что я сейчас делаю (мое текущее решение работает по мере необходимости, но использует много ресурсов ЦП)
CVImageBufferRef -> NSBitmapImageRep -> NSData -> затем передать NSData через сокет TCP клиентскому приложению, и на стороне клиента у меня есть следующий код для получения RGB:
UInt8 r,g,b
int width=320;
int height=240;
NSData *data; //read from TCP Socket
NSBitmapImageRep *bitmap=[[NSBitmapImageRep alloc] initWithData:data];
for (y=1;y<=height;y++) {
for(x=1;x<=width;x++){
NSColor *color=[bitmap colorAtX:x y:y];
// ^^ this line is actually a culprit and uses a lot of CPU
r=[color redComponent]*100;
g=[color greenComponent]*100;
b=[color blueComponent]*100;
NSLog(@"r:%d g:%d b:%d",r,g,b);
}
}
[bitmap release];
Если CVImageBufferRef можно преобразовать в массив значений RGB, который был бы идеальным, в противном случае мне нужно эффективное решение для преобразования NSBitmapImageRep в значения RGB.