实现长曝光时间的最有效方法是什么?基本上,Android camera2 的 API 允许手动更改曝光时间、ISO 和其他相机参数,但受设备限制。例如。华为 P20 Lite 有 1s 的限制,但是,内置的应用程序允许使用 8s 曝光。我想做一些类似的,但使用软件模拟长时间曝光和捕捉突发(一系列照片[ex = 1s]在结果图像中累积的间隔很小)(天文摄影预计需要16秒甚至24秒)。可能,我应该:
- 使用连拍或重复请求拍摄 n 张照片
- 在 onImageAvailableListener 中,将 byte[] 数组(捕获结果)复制到 RenderScript.Allocation 集合中
- 像这个例子一样使用 reduce rs,将转换输出分配添加到 .dng 文件中:
static void addintAccum(int *accum, int val) {
*accum += val;
}
它让理智?我已经做了一些基本上在位图上操作的试验,但它看起来很糟糕(每 n 张照片的 w、x 像素的每个 int8 颜色相加)并且需要大量时间来计算每个像素。不幸的是,由于版本冲突(可能版本 30 不存在),我使用 API 级别 30 和渲染脚本目标 API 24 生成带有无效导入的 ScriptC 类(androidx.renderscript.* 而不是 android.renderscript)。
defaultConfig {
applicationId "robertr.smartcamera"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
renderscriptTargetApi 24
renderscriptSupportModeEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}