1

我想在 JS 中检测矩形卡片(名片)。我在这里找到了类似的实现-

类似于此链接但在 JavaScript 中的东西- https://mathematica.stackexchange.com/questions/21059/how-can-i-detect-a-rectangular-region-of-interest-in-a-picture

我使用 JSfeat 库使图像模糊并检测到边缘。我应该如何仅使用 JS 在其中找到矩形。另外,我读过霍夫变换可以提供帮助。

有什么线索吗?

4

1 回答 1

0

有多种方法可以实现这一目标。霍夫变换就是其中之一,您可以使用jsfeat 的方法之一(遗憾的是,没有它的文档,但据我所知,它接受以下参数:

  • 图像(在 jsfeat 的 t_matrix 格式中,可能必须先进行灰度化)
  • rho分辨率(更大 - 更精确的结果,更慢)
  • theta分辨率(更大 - 更精确的查找,更慢)
  • threshold- 这条线必须包含在结果中的点数

rho该方法应返回包含 [ , theta] 对的数组数组,其中theta是直线的角度,是直线rho与坐标系 0 之间的距离;您需要对参数进行试验(尤其是threshold),并尝试找到一组最有可能形成矩形的四行(可能,但不必倾斜)。

您可能还应该阅读有关 Hough 变换的 wiki 页面,以首先了解它是如何工作的。

如果您只需要检测与屏幕平行的名片(我的意思是水平边缘与屏幕的水平边缘平行,垂直边缘相同),那么计算 Scharr 导数可能要容易得多(jsfeat 也有一个方法)并尝试找到两个最重要的垂直和水平边缘(请记住,当颜色从暗变为亮时,Scharr 边缘为负,反之为正,因此您需要计算绝对值以考虑这两种情况) .

于 2018-10-15T18:31:18.547 回答