0

[更新最后的问题] 我正在尝试在 640x480 图像中检测简单几何形状的设计模式。我已将图像划分为 32x32 块,并检查每个形状的中心位于哪个块中。

基于此计算,我创建了一个 (160x120) 零 (float32) 的 numpy 矩阵, col=640/4 row=480/4 每次找到形状时,都会计算中心并检查在哪个块中找到它。160x120 numpy 数组中的相应项目及其 8 个邻居设置为1。最后,160x120 numpy 数组表示为灰度图像,黑色背景和白色像素表示检测到的形状块。

如下图所示。 左上角的图像代表 160x120 的 numpy 数组。

左上角的图像代表 160x120 的 numpy 数组。到目前为止没有问题。

如您所见,新生成的图像在黑色前景上有一条白线。我想找到这条线的 rho,theta,x0,y0,x1,y1。所以我决定为此使用 HoughLines 转换。

对于如下:

edges = cv2.Canny(np.uint8(g_quadrants), 50, 150, apertureSize=3)
lines = cv2.HoughLines(edges, 1, np.pi / 180, 200)
print lines

g_quadrants是代表灰度图像的 160x120 矩阵,但输出cv2.HoughLines不包含任何内容,但None.

请帮我解决一下这个。

更新:

真实场景

显示白色的黑白(np.float32 考虑灰度)图像的小窗口是我实际得到的

  • 将 640x480 分成 32x32 块
  • 找到图像中的三角形
  • 创建一个 32x32 矩阵来映射每个块的结果
  • 如果在块中找到三角形,则将相应的矩阵元素更新1

放大视图:

32x32 np.float32 图像的缩放视图

您可以看到有白色像素形成一条直线。这可能是一些不需要的检测。我需要消除不需要的孤立像素并重建一条连续的直线。这可以通过扩张然后侵蚀图像来实现。我需要这条线的 find x0,y0, x1,y1, rho, theta。

它们可能不止一行。在这种情况下,我需要找到关于长度的前 2 行。

4

0 回答 0