Nav*_*Man 26 camera android image-processing
我正在尝试创建一个能够实时处理相机帧的Android应用程序.首先,我只想显示相机所看到的灰度版本.我设法从方法中的字节数组中提取适当的值onPreviewFrame.以下只是我的代码片段:
byte[] pic;
int pic_size;
Bitmap picframe;
public void onPreviewFrame(byte[] frame, Camera c)
{
pic_size = mCamera.getParameters().getPreviewSize().height * mCamera.getParameters().getPreviewSize().width;
pic = new byte[pic_size];
for(int i = 0; i < pic_size; i++)
{
pic[i] = frame[i];
}
picframe = BitmapFactory.decodeByteArray(pic, 0, pic_size);
}
Run Code Online (Sandbox Code Playgroud)
帧阵列的第一个[width*height]值byte[]是亮度(灰度)值.一旦我提取了它们,我如何将它们作为图像显示在屏幕上?它也不是2D数组,所以如何指定宽度和高度?
Hea*_*che 10
您可以从OpenCV4Android SDK获得广泛的指导.具体来说,请查看他们的可用示例Tutorial 1 Basic. 0 Android Camera
但是,就我的情况而言,对于密集的图像处理,这将比实时图像处理应用程序的速度慢.它们onPreviewFrame的字节数组转换为YUVImage的一个很好的替代品:
YuvImage yuvImage = new YuvImage(frame, ImageFormat.NV21, width, height, null);
创建一个与图像大小相同的矩形.
创建一个ByteArrayOutputStream并将此矩形和压缩值传递给compressToJpeg():
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yuvimage.compressToJpeg(imageSizeRectangle, 100, baos);
byte [] imageData = baos.toByteArray();
Bitmap previewBitmap = BitmapFactory.decodeByteArray(imageData , 0, imageData .length);
在表面上渲染这些预览框架以及所涉及的最佳实践是一个新维度.=)
| 归档时间: |
|
| 查看次数: |
35108 次 |
| 最近记录: |