Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What format is for Android camera with raw pictureCallback?

I am trying to use data from Android picture. I do not like JPEG format, since eventually I will use gray scale data. YUV format is fine with me, since the first half part is gray-scale.

from the Android development tutorial,

public final void takePicture (Camera.ShutterCallback shutter, Camera.PictureCallback raw, Camera.PictureCallback postview, Camera.PictureCallback jpeg)

Added in API level 5

Triggers an asynchronous image capture. The camera service will initiate a series of callbacks to the application as the image capture progresses. The shutter callback occurs after the image is captured. This can be used to trigger a sound to let the user know that image has been captured. The raw callback occurs when the raw image data is available (NOTE: the data will be null if there is no raw image callback buffer available or the raw image callback buffer is not large enough to hold the raw image). The postview callback occurs when a scaled, fully processed postview image is available (NOTE: not all hardware supports this). The jpeg callback occurs when the compressed image is available. If the application does not need a particular callback, a null can be passed instead of a callback method.

It talks about "the raw image data". However, I find nowhere information about the format for the raw image data? Do you have any idea about that?

I want to get the gray-scale data of the picture taken by the photo, and the data are located in the phone memory, so it would not cost time to write/read from image files, or convert between different image formats. Or maybe I have to sacrifice some to get it??

like image 210
user1914692 Avatar asked Jan 09 '13 00:01

user1914692


1 Answers

After some search, I think I found the answer: From the Android tutorial:

"The raw callback occurs when the raw image data is available (NOTE: the data will be null if there is no raw image callback buffer available or the raw image callback buffer is not large enough to hold the raw image)."

See this link (2011/05/10) Android: Raw image callback supported devices Not all devices support raw pictureCallback.

https://groups.google.com/forum/?fromgroups=#!topic/android-developers/ZRkeoCD2uyc (2009) The employee Dave Sparks at Google said:

"The original intent was to return an uncompressed RGB565 frame, but this proved to be impractical. " "I am inclined to deprecate that API entirely and replace it with hooks for native signal processing. "

Many people report the similar problem. See: http://code.google.com/p/android/issues/detail?id=10910

Since many image processing processes are based on gray scale images, I am looking forward gray scale raw data in the memory produced for each picture by the Android.

like image 100
user1914692 Avatar answered Nov 15 '22 20:11

user1914692