android摄像头开发,将Camera.onPreviewFrame里面的data转换成bitmap
来源:互联网 发布:php 站点根目录 编辑:程序博客网 时间:2024/06/13 12:48
最近在做的几个项目都和摄像头有关,其中不乏图像识别的,但是拍照识别有时候感觉还是有些low,直接把画面一对准自己就识别了多好,就像zxing扫描二维码一样,于是上网查了很多资料,找到了
需要给camera对象设置一个 Camera.PreviewCallback,在这个回调中实现一个方法onPreviewFrame(byte[] data, Camera camera)
当然如果我们设置camera.setPreviewCallback(callback);在设置后onPreviewFrame这个方法会被一直调用,我们可以在摄像头对焦成功够设置
camera.setOneShotPreviewCallback(previewCallback);如果这样设置onPreviewFrame这个方法就会被调用一次,我们只要将其中的data取回做成bitmap来做相应的处理就行了
那么有人问了,为什么不在对焦成功后拍照呢,因为拍照后画面会顿一下,无论你再怎么设置那几个参数时间(具体名字忘了),也会有相当短暂的停顿,所以要借助onPreviewFrame这个方法来获取图像,那么直接上onPreviewFrame这个方法的代码吧
Bitmap bitmap; public void runInPreviewFrame(byte[] data, Camera camera) { bitmap = BitmapFactory.decodeByteArray(rawImage, 0, rawImage.length, options); }我靠,就这个简单的几行代码楼主跟这墨迹这么半天?别急,如果不出意外的话,一部分人如果只是直接用BitmapFactory.decodeByteArray这个方法的话,应该有一部分会报错:
SkImageDecoder::Factory returned null;(偷笑)
原因不多说了,就是因为格式问题引起的,需要对data进行一下预处理,不废话,贴代码
ByteArrayOutputStream baos; byte[] rawImage; Bitmap bitmap; public void runInPreviewFrame(byte[] data, Camera camera) { camera.setOneShotPreviewCallback(null); //处理data Camera.Size previewSize = camera.getParameters().getPreviewSize();//获取尺寸,格式转换的时候要用到 BitmapFactory.Options newOpts = new BitmapFactory.Options(); newOpts.inJustDecodeBounds = true; YuvImage yuvimage = new YuvImage( data, ImageFormat.NV21, previewSize.width, previewSize.height, null); baos = new ByteArrayOutputStream(); yuvimage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 100, baos);// 80--JPG图片的质量[0-100],100最高 rawImage = baos.toByteArray(); //将rawImage转换成bitmap BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.RGB_565; bitmap = BitmapFactory.decodeByteArray(rawImage, 0, rawImage.length, options);
//下面对bitmap进行处理 }最后啊,好习惯,记得bitmap要及时回收哈
艾玛,下班了,提交文章走人了,下班着急了,文章写不好,哈哈,自己能看懂得了~
2 0
- android摄像头开发,将Camera.onPreviewFrame里面的data转换成bitmap
- 从public void onPreviewFrame(byte[] data, Camera arg1)拿到Bitmap
- android 开发之将 R.drawable里面的图片资源转换成Bitmap型的方法小结
- Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- Android开发:实时处理摄像头预览帧视频--浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用(转)
- Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- Android开发:实时处理摄像头预览帧视频--浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- [转]Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用
- Android 将drawable下的图片转换成bitmap、Drawable
- android camera 通过onPreviewFrame采集视频
- android camera 通过onPreviewFrame采集视频
- Android camera onPreviewFrame 图片旋转问题
- 未知循环层数的递归处理
- jsp全局变量的设置
- C语言经典案例:1!+2!+3!+....n!
- 第一次用博客
- iOS核心动画编程
- android摄像头开发,将Camera.onPreviewFrame里面的data转换成bitmap
- ROS nodelets-----简介和简单应用
- 文章标题
- 使用retrofit与Rxjava结合出的错误:java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker
- 多行文本溢出显示省略号(...)的方法
- Android中使用GridView实现底部标签页效果
- php数组函数总结
- uva1267 Network
- javaScript 对象转JSON,Java String 转JSON对象