问题标签 [android-renderscript]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
82 浏览

android - Renderscript 的行为不一致

我写了以下渲染脚本:

当我运行该脚本时,我进入了 logcat:

这让我很惊讶,因为所有的curve_?t?指针都应该是空的,我没有在 Java 代码中绑定它们。这很奇怪,所以我修改了脚本的调试部分,我得到了:

logcat 中的结果是:

out2是 1,curve_htsNULL 也是。没有out3日志,if指令没有被调用,那么如何out_s改变它的值呢?

0 投票
1 回答
386 浏览

android - Renderscript ScriptC 编译阻塞主线程

我正在开发一个使用自定义 RenderScript 脚本进行图像处理的应用程序。现在,因为我有很多这些脚本在使用,所以我在应用程序第一次启动时预加载它们。“预加载”是指我实例化每个脚本,以便它可以在设备上编译。下面是这个操作的代码片段。大约有 60 个脚本,但我认为这足以说明操作。

如您所见,我在后台线程上执行此操作。问题是脚本似乎无论如何都在主线程上编译。问题是他们阻止了用户界面。我已经用 AsyncTask 和 Service 进行了尝试,结果相同。我怀疑 RenderScript 在内部跳转到主线程来编译它们。

现在,在 Android Nougat (7.0) 之前,根据设备速度,预加载相同数量的脚本需要不到 10 秒的时间。在 Nougat 上,它需要将近一分钟,考虑到它会阻塞 UI,这是一个巨大的问题,尽管只是在第一个应用程序启动时。在随后的每次启动中,它都会在几秒钟内预加载(因为脚本已经编译)。

我需要预加载,因为按需实例化脚本不是一种选择,因为一旦用户开始使用应用程序,所有脚本都必须准备好并编译。

logcat的相关部分:

此外,如果相关,我在第一次应用程序启动时使用 RenderScript.ContextType.PROFILE,在每次后续启动时使用 RenderScript.ContextType.NORMAL。使用 RenderScript.ContextType.DEBUG 会导致脚本在每个应用程序启动时编译,所花费的时间与其他上下文相同,并且 logcat 输出略有不同:

build.gradle 的相关部分:

我搜索了有关 RenderScript 内部工作的文档和信息,但它真的很稀缺,因为大部分内部工作都由设备供应商自行决定。

所以我的问题是:是否可以强制 RenderScript 在后台线程上编译脚本,而不会阻塞 UI。

任何帮助表示赞赏。

0 投票
1 回答
381 浏览

android-ndk - Android NDK r14 是否支持 Renderscript?

我正在尝试构建和使用原生代码中的 RenderScript 的 android 应用程序。我想知道哪些版本的 NDK 支持 RenderScript API?

我在 NDK r14 中找不到 RenderScript 头文件,但它们在 r10e 版本之前一直存在。

NDK 不再支持 RenderScript 吗?如果支持它,我在哪里可以找到它的 API 的一些示例?

谢谢!

0 投票
1 回答
178 浏览

android - 优化行和列单元格的渲染脚本总和

在优化以下代码方面有什么建议吗?代码首先对图像进行灰度、反转然后阈值处理(代码不包括在内,因为它很简单)。然后它对每一行和每一列的元素求和(所有元素都是 1 或 0)。然后它找到具有最高值的行和列的行和列索引。

该代码应该找到图像的质心并且它可以工作,但我想让它更快

我正在为 API 23 开发,因此不能使用缩减内核。

Java 片段:

Renderscript.rs 片段:

任何帮助,将不胜感激

0 投票
1 回答
704 浏览

android - Android Camera2 Renderscript 过热问题

我有这个过热问题,运行几个小时后它会关闭我的手机。我想 24/7 全天候运行,请帮助我改进:

我使用 Camera2 接口,RAW 格式后跟渲染脚本将 YUV420888 转换为 rgba。我的渲染脚本如下:

这是我调用渲染脚本转换为 rgba 的地方:

这是使用 OpenCV 运行图像处理的回调:

整个过程以〜22fps的速度运行。我仔细检查过,没有内存泄漏。但是即使在屏幕关闭的情况下运行一段时间后,手机也会变得非常热,并自行关闭。请注意,如果我删除图像处理部分,问题仍然存在。这有什么问题?我可以打开手机相机应用程序并让它运行几个小时而不会出现问题。

  • 渲染脚本会导致热量吗?
  • 22fps会导致热量吗?也许我应该减少它?
  • Android后台服务会不会发热?

谢谢。

ps:我在完全支持Camera2接口的LG G4上测试了这个。

0 投票
1 回答
476 浏览

android - Android,来自 SupportLibrary 的 RenderScript 和 java.lang.NoClassDefFoundError

我想使用 SupportLibrary 中的 RenderScript 来创建模糊效果。

为此,我从这里找到了解决方案 https://stackoverflow.com/a/14988991/408780

问题是, rs = RenderScript.create(myAndroidContext) 导致 java.lang.NoClassDefFoundError ,我不知道出了什么问题。

根据https://developer.android.com/reference/android/support/v8/renderscript/ScriptIntrinsicBlur.html ScriptIntrinsicBlur 在版本 23 中添加。

所以我只是在应用程序 gradle 中添加了以下几行:

我还尝试了如下所述的 renderscriptTargetApi 21 https://github.com/react-native-community/react-native-blur/issues/110#issuecomment-272956182

但仍然没有成功。有什么建议么?

也许一些额外的信息:

minSdk = 14,targetSdk = 19,compileSdk = 25

先感谢您。

0 投票
0 回答
336 浏览

java - android renderscript ScriptIntrinsicColorMatrix setRGBtoYUV 示例用法

正如标题所说,如何使用 ScriptIntrinsicColorMatrix 将位图 RGB 转换回 YUV byte[]?下面是示例代码(不能被zxing解码):

我注意到的一件事是原始相机 YUV 字节为 3110400 字节,但在使用 ScriptIntrinsicColorMatrix 转换后变为 8294400,我认为这是错误的。

YUV -> BW -> YUV 的原因是我想将图像转换为黑白(不是灰度)并返回 YUV 以进行 zxing 解码,同时在 Surfaceview 中显示黑白(如自定义相机滤镜) .

尝试了下面的代码,但它有点慢(可以通过 zxing 解码)。

RGB 到 YUV 的任何其他快速替代方案?如果 ScriptIntrinsicColorMatrix 类无法完成?

谢谢,麻烦您了

0 投票
1 回答
713 浏览

android - 为什么在 API 级别 23 或更高级别删除 RenderScript 图形?没有 GLSL 的替代 FragmentShader 解决方案?

Android RenderScript 图形子系统从 API23 及以上版本中移除:

https://developer.android.com/guide/topics/renderscript/reference/rs_graphics.html

这是否意味着 renderscript 不再是 VertexShader/FragmentShader 解决方案的替代品?这是否意味着 renderscript 将不再使用 OpenGL/GPU 进行计算?

弃用下的决定是什么?

在 Android 平台上是否有任何没有 GLSL 的替代 FragmentShader 解决方案?

0 投票
1 回答
178 浏览

android-things - Android Things 是否支持 RenderScript 计算?

我知道 Android Things 支持 NDK。我找不到说明 Android Things 是否支持 RenderScript Compute 的参考。我的假设是否定的(因为并非所有的 Things 平台都会有合适的 GPU),但我希望人们可能已经尝试过,或者知道 RenderScript Compute 是否适用于 Android Things。

0 投票
1 回答
530 浏览

java - Android:动态创建掩码

在我的 android 应用程序中,我有一辆车,用户可以从中单击并选择不同的面板。图像相对复杂(与此处粘贴的图像相反),因此很难将按钮覆盖在正确的位置。此外还有很多不同的图像。我想尝试的解决方案:

(第一个图像代表用于确定单击哪个面板的颜色,第二个图像代表生成的掩码,最后一个图像代表“结果”)。

我遇到的唯一问题是:如何动态创建蒙版?我想过使用填充类型的方法来创建一个带有所选面板的“蒙版”的新画布​​。但是,我担心它可能计算量太大。有更简单的建议吗?[我对汽车图像的表示[1]

更新:好的,所以我已经走了很远。正如预期的那样,蒙版的创建时间太长(小图像需要 2-4 秒)。但是,后来我发现了 RenderScripts!!我想我仍然可以让它工作。我现在唯一的小问题是:我如何传递已按下的颜色?

我当前的代码如下所示:

这是脚本:

但是,当我尝试从 myBitmap(或脚本中的图像)读取像素值时,RGB 始终为 0。

(对不起命名不好等。我一直在疯狂地试图弄清楚这一点)