android - Android 上的图像处理

标签 android image-processing

我正在为 Android 编写应用程序。 我需要对从相机拍摄的照片进行一些图像处理。 我使用 Camera.PictureCallback 获取照片,并以字节数组形式获取图片。 问题是我想对照片的每个像素进行操作(一些过滤和其他东西)所以我想,将照片放在字节数组中并不是一个坏主意。但我不知道如何解释这个字节数组中的信息......我知道进行处理的唯一方法是使用 BitmapFactory.decodeByteArray() 然后使用 Bitmap 对象。这是处理大量图像处理的好方法吗? 现在我使用的是这样的东西:

Bitmap mPhotoPicture mPhotoPicture = BitmapFactory.decodeByteArray(imageData, 0 , imageData.length);

mPhotoPicture = mPhotoPicture.copy(Bitmap.Config.RGB_565, true);

感谢任何帮助。

最佳答案

我不确定解码为字节数组是否是在 Android 上执行此操作的最佳方式,但我可以提供我所了解的一般图像处理知识。

如果您使用的是 RGB_565,这意味着每个像素为 16 位,或其中两个字节。前 5 位是红色,接下来的 6 位是绿色,最后 5 位是蓝色。在 Java 中处理这个问题很棘手。我建议您使用更简单的格式,如 ARGB_8888,这意味着您有 32 位,或每个像素四个字节,每个字节都有自己的值(alpha、红色、绿色、蓝色)。

要测试,请尝试设置每四个字节,如 [3][7][11] 等,以0. 这应该消除所有特定 channel ,在本例中,所有蓝色。

[2][6][10] 等将是每个像素的所有绿色值。

(请注意,这四个组件的顺序可能相反,因为我不确定字节顺序!所以我可能只是告诉你如何取出 alpha,而不是蓝色……)

关于android - Android 上的图像处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2043019/

相关文章:

android - 上传APK文件错误 "You need to add an icon to your APK"

android - Firebase Audience 未显示数据

android - Android 系统 WebView 中的 SSL 错误

c++ - QImage padding - 任何可用的功能?

matlab - MATLAB 中未知水平水平曲线的表面

java - Android 设备中的运行时错误

android - 尝试稍等片刻,然后刷新适配器

python - 使用 Python 和 pillow (PIL) 填充空心形状

c# - 比较倾斜度数的图像

c# - 如何用OpenCV进行图像光照校正?