Java:对图像的一部分进行操作的有效方法
因此,对于大多数图像操作,我们使用Java:对图像的一部分进行操作的有效方法,java,opencv,Java,Opencv,因此,对于大多数图像操作,我们使用openCV模块。我面临的问题是,当我只想在图像的特定部分执行操作时 现在我正在遍历整个像素矩阵,并使用get和put获取像素值 但我知道这不是一种有效的手术方式 比如,如果我只想在眼睛上做高斯模糊,那么首先我必须在图像的整个副本上做高斯模糊。然后使用眼睛的轮廓点创建遮罩,然后遍历遮罩行和列,将模糊像素复制到原始图像 这是一种非常低效的方法。 此外,我们有子矩阵的概念,但它将只采用矩形,我们可能不需要在所有情况下 既然我们有了面具,原始图像,我们怎么能对它进行操
openCV
模块。我面临的问题是,当我只想在图像的特定部分执行操作时
现在我正在遍历整个像素矩阵,并使用get
和put
获取像素值
但我知道这不是一种有效的手术方式
比如,如果我只想在眼睛上做高斯模糊
,那么首先我必须在图像的整个副本上做高斯模糊。然后使用眼睛的轮廓点创建遮罩,然后遍历遮罩行和列,将模糊像素复制到原始图像
这是一种非常低效的方法。
此外,我们有子矩阵的概念,但它将只采用矩形,我们可能不需要在所有情况下
既然我们有了面具,原始图像,我们怎么能对它进行操作呢
PS:寻找Java解决方案我认为没有简单的内置函数来模糊具有随机形状的图像的子区域。我建议您遵循以下步骤:
- 从轮廓坐标点的最小值和最大值定义一个矩形形状,并在该矩形中循环。这将允许您为轮廓定义一个最小面积矩形,并在其中循环,而不是在整个图像中循环
- 然后只模糊随机轮廓内的像素。您可以使用内置函数执行
很抱歉,我不懂Java,否则我会帮您编写一段代码。您说的我们在所有情况下都可能不需要是什么意思?你的意思是你不想把一个矩形作为一个形状?@ROS_OPENCV是的,大多数操作不是针对一个矩形,而是一个不同的形状。那么这个形状是如何定义的,比如说眼睛?@ROS_OPENCV形状是通过使用像dlib这样的物体检测来定义的,它可以在图像中为我们提供点。你知道你的物体在哪里,为什么不对它们的点进行模糊处理?你不必浏览整个图像,而是直接去你想模糊的地方!