【发布时间】:2020-05-14 22:22:05
【问题描述】:
我正在开发一个 Android 应用程序,它使用背景 Service 以编程方式捕获当前屏幕上的任何内容的屏幕截图。我以Bitmap 获取屏幕截图。
接下来,我成功地将OpenCV导入到我的Android项目中。
我现在需要做的是模糊该图像的 子集,即不是整个图像本身,而是图像中的 [矩形] 区域或子区域。我有一个 Rect 对象数组,代表我需要在屏幕截图中模糊的矩形区域。
我一直在寻找有关在 Java 中使用 OpenCV 执行此操作的教程,但我还没有找到明确的答案。 Mat 和 Imgproc 类显然是令人感兴趣的,还有 Mat.submat() 方法,但我一直无法找到一个清晰、直接的教程来完成这项工作。
我搜索了很多,但我找到的示例都不完整。我需要在 Java 中,在 Android 运行时中执行此操作。
我需要的是:
Bitmap>>>Mat>>>Imgproc>>>Rect>>>Bitmap与 ROI 模糊。
这里有经验丰富的 OpenCV 开发人员,您能指出我正确的方向吗?这是我唯一坚持的事情。
相关:
Gaussian blurring with OpenCV: only blurring a subregion of an image?.
【问题讨论】:
-
简单来说,您可以将 ROI 提取到单独的 Mat 中,将过滤应用到该 Mat 并将其重新插入到原始图像中。还是我在这里遗漏了什么?
-
我想我错过了一些东西,因为这个问题对我来说似乎很简单!在 c++ 中,如果 img 是你的 Mat 而 r 是你的 Rect,那么 img(r) 本身就是一个图像,你可以将它独立地提供给 blur 函数 => blur(img(r), img(r), ksize);
标签: android opencv android-bitmap gaussianblur