【问题标题】:Finding non transparent filled areas in images on javascript canvas在javascript画布上的图像中查找非透明填充区域
【发布时间】:2015-08-27 14:47:50
【问题描述】:

我有一个带有一些实心圆、矩形等的图像。我想找到填充区域的 x1、x2、y1、y2 区域。

Javascript Method to detect area of a PNG that is not transparent

接受的答案工作正常,但我需要分别找到每个区域。如下图所示,我需要 x1、x2、y1、y2 位置。你有什么想法吗?

【问题讨论】:

  • 形状是否颜色一致且完全不透明?
  • 图片部分颜色不统一。但所有其他区域将完全透明。

标签: javascript image canvas


【解决方案1】:

这里有一个大纲让你开始:

  1. 使用context.getImageData从画布中获取像素数据,

  2. 扫描第一个不透明像素的像素数据,

  3. 使用“marching squares”算法查找圆形或矩形周围的边界路径点:Draw border around nontransparent part of image on canvas,

  4. 迭代路径点并找到 [minX,minY] 和 [maxX,maxY]。这是圆形或矩形的边界框。

  5. 擦除在步骤#4 中计算的边界框区域,以便您可以寻找下一个形状。

  6. 返回步骤#1,直到确定画布上所有非透明形状的边界框。

【讨论】:

  • 4.迭代路径点并找到 [minX,minY] 和 [maxX,maxY]。这是圆形或矩形的边界框。如何检测具有这些点的矩形?据我所知,它返回所有不透明的点。
  • Step#3 将返回一组点,这些点形成围绕第一个不透明形状的路径。因此,找到该组点的最小值和最大值将为您提供该形状的边界框。 ;-)
  • 如何清除画布上的矩形?有什么方法可以像 clear(x1, y1, x2, y2) 一样清除画布?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
相关资源
最近更新 更多