【发布时间】:2020-10-20 07:31:31
【问题描述】:
我正在制作一个安卓应用程序,其中有一个简单的相机 UI 以及一个过滤器列表来操作相机点击的图片。 我正在使用 Java 中的处理库 (https://processing.org/) 以及处理 IDE 中的 Ketai 库 (http://ketai.org/)。
以下是我的程序的主要运行方式:
--- 我有一个相机对象和一个空图像对象。图像对象的分辨率与相机的分辨率相同。
--- 从相机读取也返回一个图像对象。我们将相机返回的图像称为cameraImage,将空图像称为dummyImage。
--- 在每一帧,我使用 cameraImage 的像素数组从相机读取,我将每个像素单独复制到相应坐标位置的 dummyImage。
--- 正是在从 cameraImage 复制到 dummyImage 时,我根据用户选择的选项来操作像素。
--- 我在使用位移(以获得最大效率)复制每个像素时获取每个像素的红色、绿色和蓝色值,然后对其进行操作。
--- 复制到 dummyImage 完成后,我将 dummyImage 作为普通图像显示到屏幕上。
现在的问题是,当我直接显示 cameraImage 时,我很容易达到 50 到 60 fps 左右。但是当我在复制后显示 dummyImage 时,我得到大约 1.5 fps。
以下代码演示了我如何从 cameraImage 复制到 dummyImage。它没有任何过滤器,但会花费与使用任何过滤器一样多的时间。
cameraImage.read();
cameraImage.loadPixels();
dummyImage.loadPixels();
for (int x = 0; x < cameraImage.width; x++){
for (int y = 0; y < cameraImage.height; y++){
int index = x + (y * cameraImage.width);
color currentPixel = cameraImage.pixels[index];
float r = currentPixel >> 16 & 0xFF;
float g = currentPixel >> 8 & 0xFF;
float b = currentPixel & 0xFF;
dummyImage[index] = color(r, g, b)
}
}
dummyImage.updatePixels();
image(dummyImage);
我想知道如何将帧数增加到每秒至少 20 个。请评论以获取更多信息,我会尽快回复。
【问题讨论】:
标签: java android image camera processing