`
gjhappyyy
  • 浏览: 259552 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

android camera拍照失真问题

 
阅读更多

项目中遇到各种失真,例如图片变绿,图片曝光严重,出现两个图片拼接的情况,这些问题都是偶然的,有些手机可能遇到的比较频繁,例如有个用户使用的是SM-G3502C手机,拼接图片频繁。但其他用户使用的这款手机木有问题。。。哪位大侠遇到过这些问题,快点给我留言呀,单身的英雄,我给你介绍个美丽的妹子大笑

 

下面是论坛上其他朋友的分析,但应用层我的apk中貌似没法操作系统camera中cpp的内容。有知道如何操作的分享一下,介绍妹子噢(*^__^*) 

 

http://bbs.csdn.net/topics/390252674

问题: 有没有谁对Android Camera 应用熟悉, Android 原生Camera 应用的全景预览画面有点失真, 颜色偏亮;比如, 深绿色的叶子, 在画面上是浅绿色, 好像覆盖一层亮白, 谁解决了?

建议:我碰到过, 这个是原生方案采用的参数不恰当导致的。

全景图像数据的处理是使用OpenGL 处理的, 你可以看下 Camea apk的 jni部分的源码, 找到文件:
jni/feature_mos/src/mosaic_renderer/YVURenderer.cpp

找到 成员函数 FragmentShaderSource()的定义, 该函数内部采用的从 RGBA 格式转YUV格式的矩阵参数选择不恰当, 如果你对相关 知识熟悉的话, 应该知道是有两组可选参数的, 分别用在静态图像和动态视频中。

相关转换知识请参考: http://www.fourcc.org/fccyvrgb.php

第一组:
Y  =      (0.257 * R) + (0.504 * G) + (0.098 * B) + 16

Cr = V =  (0.439 * R) - (0.368 * G) - (0.071 * B) + 128

Cb = U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128

这是原生 camera 采用的这一种, 是不恰当的, 而且存在错误, 请看如下实际代码:
"const vec4 coeff_y = vec4(0.257, 0.594, 0.098, 0.063);\n"
 "const vec4 coeff_v = vec4(0.439, -0.368, -0.071, 0.500);\n"
 "const vec4 coeff_u = vec4(-0.148, -0.291, 0.439, 0.500);\n"

请看每一个向量定义中最后一维的值, 如果RGBA中alpha分量不为255, 必然导致 转换公式中最后的常量部分值不对, 这是错误, 既然是常量, 就不应该收alpha分量影响。

第二组:
y  = 0.299R+0.587G+0.114B
cr =  0.500R-0.419G-0.081B
cb =  -0.169R-0.331G+0.500B

这个是修正方案, 你可以采用这个; 不过需要注意, 这个转换公式不带常数, 因此转换矩阵的最后一维都设为0即可。

修改后:
 "const vec4 coeff_y = vec4(0.299, 0.587, 0.114, 0.0);\n"
 "const vec4 coeff_v = vec4(0.500, -0.419, -0.081, 0.0);\n"
 "const vec4 coeff_u = vec4(-0.169, -0.331, 0.500, 0.0);\n"

你可以试一下。

 

 

分享到:
评论

相关推荐

    Android例子源码Camera只拍摄矩形区域图片

    本教程将详细讲解如何通过Android的Camera API实现这一功能。 首先,我们需要理解Android的相机工作原理。Android提供了两种访问相机的方式:Camera API(旧版)和Camera2 API(新版)。在这个例子中,我们将主要...

    Android中关于自定义相机预览界面拉伸问题

    当我们在Android应用中使用Camera API创建自定义相机预览时,可能会遇到图像变形或拉伸的问题。这主要是由于两个因素: 1. 摄像头传感器的物理方向与设备屏幕显示方向不匹配。例如,如果设备处于竖屏模式,但摄像头...

    Android自定义拍照解决部分手机拍完之后图片不清楚的问题

    在Android应用开发中,自定义拍照功能是一项常见的需求,但同时也可能遇到各种问题,其中最常见的一个就是拍完照片后图片不清楚。这个问题可能由于多种原因导致,包括但不限于相机配置参数不当、图片压缩设置不合理...

    MTK camera 调试常见问题及解决办法

    当拍摄的图片出现色彩失真、偏色或黑白等问题时,可能涉及ISP(Image Signal Processor)配置错误。需要检查ISP的白平衡、曝光、饱和度等参数设置,确保它们符合摄像头硬件的特性。此外,还应检查HAL(Hardware ...

    Compose使用OpenGL+CameraX快速实现相机拍视频实时滤镜“、”拍照+滤镜

    使用Jetpack Compose UI开发框架,快速简单易上手,使用CameraX + OpenGL,实现更快更...同学们,可以下载我们的源码和快手APP的视频拍照和视频录制进行对比一下,我们的速度和它的是一样的,而且图片质量也不失真。

    android之camera用法实例详解

    在Android平台上,Camera API是开发者用来实现相机功能的关键接口,它允许应用进行拍照、录制视频以及其他与摄像头相关的操作。在本文中,我们将深入探讨如何在Android应用中使用Camera API,并通过实例来解决一些...

    Android自定义照相机Camera出现黑屏的解决方法

    在Android应用开发中,自定义相机功能是一项常见的需求。然而,开发者在实现这一功能时可能会遇到...开发者在进行相机功能开发时,应充分理解Android Camera API,结合设备特性进行优化,以提供稳定、良好的用户体验。

    CircleCamera:Android自定义圆形拍照、解决非全屏(竖屏)下预览相机拉伸问题

    在Android开发中,有时我们需要实现特定的界面效果或者解决特定的问题。本项目“CircleCamera”专注于提供一个自定义的圆形拍照解决方案,同时解决了在非全屏(竖屏)状态下相机预览图像拉伸的问题,以及在平板等不...

    安卓Android源码——拍照,完美尺寸保存SD卡.zip

    本文将深入探讨如何使用Android源码实现拍照并以完美尺寸保存至SD卡的功能。首先,我们需要理解Android系统中相机API的工作原理,以及如何适配不同设备的屏幕分辨率。 1. **Android相机API**:Android提供了两种...

    android资源图片浏览,系统图片,android.R.drawable浏览,查看系统图片,查看android自带图片

    例如,`android.R.drawable.ic_menu_camera`是相机图标的ID,常用于表示拍照功能;`android.R.drawable.ic_dialog_info`则表示信息提示,常用于对话框的标题或者按钮。开发者可以根据需求直接使用这些系统图标,而...

    Android-一款用于在Android设备上获取照片

    - 拍照:Android系统提供了Camera API,开发者可以通过调用Camera类的方法启动相机应用,拍摄完成后通过回调处理返回的图片数据。然而,从Android 3.0开始,推荐使用Camera2 API,它提供了更高级的功能和更好的性能...

    可压缩10M大图不失真

    在Android中,Camera API或CameraX库可以用来处理拍照操作,拍完的照片可以通过ContentResolver获取到,然后按照上述方式进行压缩。 标签中的"上传"提示了我们,这个技术可能用于网络上传。在上传大图之前进行压缩...

    Android自定义相机源码(Builder模式封装)

    Android提供了Camera类来进行相机操作,但需要注意的是,从Android API 21(Lollipop)开始,推荐使用Camera2 API,因为它提供了更丰富的功能和更好的性能。 2. **SurfaceHolder**:为了显示相机预览,我们需要一个...

    拍照、相册选图

    下面我们将深入探讨这个话题,包括拍照获取图片、相册获取图片以及处理图片失真的方法。 首先,我们来看**拍照获取图片**。在Android和iOS系统中,我们可以调用系统的相机接口来实现这一功能。在Android中,可以...

    手机拍照上传和相册选择相片

    - **质量压缩**:通过调整图片质量,可以在不失真的情况下减小文件大小,例如Android的`Bitmap.compress()`方法。 5. **异步操作**: 图片处理通常涉及大量计算,应使用异步任务或后台线程避免阻塞UI。Android可...

    拍照得到正确尺寸图片

    在iOS中,可以使用`UIImagePickerController`,在Android中,可以使用`CameraX`库,它们都允许设置输出图片的尺寸。在后端,可以使用像OpenCV这样的库来处理图片。 4. **元数据**:图片的元数据中通常包含其原始...

    照相机简易实现

    在Android平台上开发一款照相机应用是一项常见的任务,但过程中可能会遇到一些挑战,比如图像拉伸和扭曲的问题。...通过深入了解Android的相机机制,我们可以克服像拉伸和扭曲这样的问题,提供高质量的拍照体验。

    android常用图片特效处理.zip

    11. **实时滤镜**:使用Camera2 API结合OpenGL ES,开发者可以实现摄像头实时滤镜,用户可以在拍照或录像时预览滤镜效果。 12. **图片选择器**:Android系统本身提供了Intent机制供用户选择图片,但通常开发者会...

    安卓开发-Android 图像处理篇.zip

    10. **相机与图片捕获**:Android的` Camera `和` CameraX `API用于控制设备的摄像头,实现拍照和录制视频。理解如何获取图片、调整相机参数以及处理捕获的图像。 11. **图像存储与分享**:了解如何将处理后的图片...

    《图片相关--相册选择、拍照、缩放、裁减》--源码

    在Android开发中,图片处理是常见且重要的功能之一,涵盖了用户选择相册、拍照、图片缩放和裁剪等多个环节。这篇博客的源码详细展示了这些功能的实现,旨在帮助开发者更好地理解和应用到自己的项目中。 1. 相册选择...

Global site tag (gtag.js) - Google Analytics