私は CVImageBufferRef (QTKit を使用してキャプチャ) がある 10.5+ 用の最初の mac osx cocoa アプリに取り組んでいます。このイメージを TCP ソケット経由でクライアント アプリに転送する必要があります。クライアント アプリには RGB 値が必要です。これが私が現在行っていることです(私の現在のソリューションは必要に応じて機能しますが、多くのCPUを使用します)
CVImageBufferRef --> NSBitmapImageRep --> NSData --> 次に、TCP Socket 経由で NSData をクライアント アプリに送信し、クライアント側で 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 値に変換する効率的なソリューションが必要です。