• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: How to get pixel information from CIImage of QT frame
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to get pixel information from CIImage of QT frame


  • Subject: Re: How to get pixel information from CIImage of QT frame
  • From: Ricky Sharp <email@hidden>
  • Date: Tue, 15 Jan 2008 20:28:36 -0600


On Jan 15, 2008, at 5:51 PM, JArod Wen wrote:

I am now on a video analysis program. We have get the QT movie and show it in a OpenGLView using Core Video(mainly based on the source code of civideoDemo). Now we need to do pixel analysis on the frame of the movie. I am sure that there is no problem on the video->frame since we have done some composite filter based on the CIImage frame we get from the movie.

It is a straight forward idea that we convert each frame into a Core Image object using

[CIImage imageWithCVImageBuffer:currentFrame]

Here currentFrame is defined by:

CVImageBufferRef	currentFrame;

and then our idea is to get the pixel information using NSBitmapImageRep.

One solution of using [[NSBitmapImageRep alloc] initWithCIImage] failed when the program run into a Exec_Bad_Access error.

I tried another way: draw the CIImage on to a CIContext and then render it to bitmap data:

NSData* pixelData = nil;
[ciContextOffScreen render:inputCIImage toBitmap:pixelData rowBytes:rowBytes bounds:[inputCIImage extent] format:kCIFormatRGBAf colorSpace:nil];
if(!pixelData)
[ciContext render:inputCIImage toBitmap:pixelData rowBytes:rowBytes bounds:[inputCIImage extent] format:kCIFormatRGBAf colorSpace:nil];
return [[NSBitmapImageRep alloc] initWithData:pixelData];


But the problem is finally there is no data in pixelData. So finally the returned NSBitmapImageRep is empty.


Searching on 'CVImageBufferRef NSImage' turned up a decent amount of hits including the following link from the QTKit Capture Guide:

<http://developer.apple.com/documentation/QuickTime/Conceptual/QTKitCaptureProgrammingGuide/CreatingStopMotionApplication/chapter_5_section_7.html >

In the addFrame: block of sample code, they build an image with the frame buffer data using an NSCIImageRep:

NSCIImageRep *imageRep = [NSCIImageRep imageRepWithCIImage:[CIImage imageWithCVImageBuffer:imageBuffer]];
NSImage *image = [[[NSImage alloc] initWithSize:[imageRep size]] autorelease];


Note that there's also other lines around that (to deal with stuff like calling from a thread other than main), so definitely read the entire example and see what may apply in your case. No idea on why you were getting the EXEC_BAD_ACCESS; could be that you were also calling things from other threads? Could be that it's not possible to create an NSBitmapImageRep from such a data provider. After all, a CVImageBufferRef is really an abstract type. Since you mentioned OpenGL, your CVImageBufferRef is probably really a CVOpenGLBufferRef
You may also want to move this thread to the Quicktime developers list.
___________________________________________________________
Ricky A. Sharp mailto:email@hidden
Instant Interactive(tm) http://www.instantinteractive.com


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >How to get pixel information from CIImage of QT frame (From: JArod Wen <email@hidden>)

  • Prev by Date: re: More CoreData questions...
  • Next by Date: Re: Core Data performance advice... creating relationships.
  • Previous by thread: How to get pixel information from CIImage of QT frame
  • Next by thread: Wrapping NSTask, setting PATH env var to current user's PATH...
  • Index(es):
    • Date
    • Thread