如何知道OpenCv4Android native中是否使用了GPU计算
How to know if GPU computing is used in OpenCv4Android native
我正在使用 Opencv4Android 在 Android 上编写本机应用程序。我正在使用 Opencv 管理器。在应用程序启动时,我收到了这些日志:
但是如何知道 openCv 是否真的使用 OpenCl 进行加速?
不幸的是,Google 在相当长一段时间内放弃了对 Android 的 OpenCL 支持。这样做是为了支持 RenderScript。
所以首先要做的是检查您的平台上的 OpenCL 可用性。您可以使用 OpenCL-Z。该工具可能会告诉您是否存在 OpenCL 运行时以及它是否可以同时使用 GPU 和 CPU.
OpenCV4Android 编译时支持 OpenCL 这一事实意味着 您可以使用 OpenCL 特定的命名空间。因此,如果您的平台有 OpenCL,并且在您的代码中使用 OpenCL 特定对象(例如 oclMat),您的本机代码将使用 OpenCL。
最后,您无法确定 OpenCV 实现将使用什么 OpenCL 设备 (GPU / CPU)。您可以浏览 OpenCV 的源代码并查看内核的具体实现,或者您可以使用可用于 Android 设备的系统分析器,并观察 GPU 和 CPU activity.
感谢 VAndrei,我现在确定我没有使用 OpenCL。我没有使用 ocl 包。此外,我随后尝试了 ocl 包,但在第一个 ocl 代码行的 运行 处出现错误。然后我检查了 OpenCl-z,似乎 OpenCL 在设备上不可用 (Rk3188)。
我对系统(ARM Cortex-A9)的性能感到非常惊讶。对于这些线条,灰度分辨率为 160x120:
cv::absdiff(_inputMat, _previousMat, _outputMat);
_inputMat.copyTo(_previousMat);
cv::GaussianBlur(_outputMat, _outputMat, cv::Size(3,3), 2.0, 2.0);
cv::threshold(_outputMat, _outputMat, 100, 255, 0);
系统需要约 1.5 毫秒。这就是为什么我想知道是否使用了 OpenCl。似乎 Rk3288 支持 OpenCl。我将不得不检查 htis 其他系统的改进。
我正在使用 Opencv4Android 在 Android 上编写本机应用程序。我正在使用 Opencv 管理器。在应用程序启动时,我收到了这些日志:
但是如何知道 openCv 是否真的使用 OpenCl 进行加速?
不幸的是,Google 在相当长一段时间内放弃了对 Android 的 OpenCL 支持。这样做是为了支持 RenderScript。
所以首先要做的是检查您的平台上的 OpenCL 可用性。您可以使用 OpenCL-Z。该工具可能会告诉您是否存在 OpenCL 运行时以及它是否可以同时使用 GPU 和 CPU.
OpenCV4Android 编译时支持 OpenCL 这一事实意味着 您可以使用 OpenCL 特定的命名空间。因此,如果您的平台有 OpenCL,并且在您的代码中使用 OpenCL 特定对象(例如 oclMat),您的本机代码将使用 OpenCL。
最后,您无法确定 OpenCV 实现将使用什么 OpenCL 设备 (GPU / CPU)。您可以浏览 OpenCV 的源代码并查看内核的具体实现,或者您可以使用可用于 Android 设备的系统分析器,并观察 GPU 和 CPU activity.
感谢 VAndrei,我现在确定我没有使用 OpenCL。我没有使用 ocl 包。此外,我随后尝试了 ocl 包,但在第一个 ocl 代码行的 运行 处出现错误。然后我检查了 OpenCl-z,似乎 OpenCL 在设备上不可用 (Rk3188)。
我对系统(ARM Cortex-A9)的性能感到非常惊讶。对于这些线条,灰度分辨率为 160x120:
cv::absdiff(_inputMat, _previousMat, _outputMat);
_inputMat.copyTo(_previousMat);
cv::GaussianBlur(_outputMat, _outputMat, cv::Size(3,3), 2.0, 2.0);
cv::threshold(_outputMat, _outputMat, 100, 255, 0);
系统需要约 1.5 毫秒。这就是为什么我想知道是否使用了 OpenCl。似乎 Rk3288 支持 OpenCl。我将不得不检查 htis 其他系统的改进。