我想在JS中检测矩形卡(名片)。我在这里找到了类似的实现 -
类似于此链接但在JavaScript中的内容 - https://mathematica.stackexchange.com/questions/21059/how-can-i-detect-a-rectangular-region-of-interest-in-a-picture
我使用JSfeat库使图像模糊并检测到边缘。我应该如何使用JS找到其中的矩形形状。 另外,我已经读过霍夫变换可以提供帮助。
有任何线索吗?
答案 0 :(得分:0)
有多种方法可以实现这一目标。霍夫变换是其中之一,您可以使用one of jsfeat's method(遗憾的是,没有相关文档,但是据我所知,它接受以下参数:
rho
分辨率(更大-更精确的发现,更慢)theta
分辨率(更大-更精确的发现,更慢)threshold
-结果中必须包含多少点该方法应返回一个包含[rho
,theta
]对的数组,其中theta
是直线的角度,rho
是直线和坐标系的0;您需要试验这些参数(尤其是threshold
),并尝试找到一组最有可能形成矩形(可能但不必倾斜)的四行。
您可能还应该阅读wiki page on Hough transform,以掌握其工作原理。
如果您只需要检测与屏幕平行的名片(我的意思是水平边缘与屏幕水平边缘平行,垂直方向相同),则计算Scharr导数可能更容易(jsfeat also has a method for that ),并尝试找到两个最显着的垂直和水平边缘(请记住,当颜色从黑暗变为明亮时,Scharr边缘为负,反之则为正,因此您需要计算绝对值以解决这两种情况)。