[最后更新了问题] 我试图在640x480图像中检测简单几何形状的设计模式。我将图像分成32x32块并检查每个形状的中心位于哪个块中。
基于这个计算,我创建了一个(160x120)零(float32)的numpy矩阵
col=640/4
row=480/4
每次找到形状时,都会计算中心并检查它找到的块。相应的项目及其160x120 numpy数组中的8个邻居设置为 1 。最后,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考虑GrayScale)图像显示白色的小窗口是我实际上得到的
放大视图
你可以看到有白色像素形成一条直线。可能是一些不需要的检测到的。我需要消除不需要的孤立像素并重建连续的直线。这可以通过扩张然后侵蚀图像来实现。我需要找到这一行的x0,y0,x1,y1,rho,theta。
他们可能不止一行。在这种情况下,我需要找到与长度相关的前2行。