Java:在图像的一部分中执行操作的有效方式

时间:2017-07-25 05:05:08

标签: java opencv

因此,对于大多数图像操作,我们使用openCV模块。我面临的问题是当我只想在图像的特定部分进行操作时。

现在我遍历整个像素矩阵并使用getput获取像素值。

但我知道这不是一种有效的操作方式。

如果我只想在眼睛上做Gaussian Blur,那么首先我必须在整个图像副本中进行高斯模糊。然后使用眼睛的轮廓点创建一个蒙版,然后遍历蒙版行和列,将模糊像素复制到原始图像。

这是一种非常低效的方法。 此外,是的,我们有子矩阵的概念,但只采用矩形,我们在所有情况下都不需要。

因此,假设我们有掩码,原始图像,我们如何对其进行操作?

PS:寻找Java解决方案

1 个答案:

答案 0 :(得分:0)

我认为没有简单的内置函数来模糊具有随机形状的图像的子区域。我建议你按照这些步骤进行操作:

  • 从轮廓坐标点的最小值和最大值定义矩形形状,然后循环显示该矩形。这将允许您为轮廓定义最小区域矩形并在其内部循环,而不是循环遍历整个图像。
  • 然后仅模糊随机轮廓内的像素。您可以使用内置函数执行point-in-contour test c++

第一步它只是循环中的条件,你不必创建一个掩码或类似的东西。 对不起,我不知道Java,我会用一段代码帮助你。