我的图片中包含网格中的项目。该问题的一个阶段是检测并构建完整网格的掩码,该掩模可以稍微旋转时钟或逆时针。我当前的CV管道从图像中提取(概率)Hough线,然后使用其轮廓来过滤一组矩形(分别调用实际和检测到的集合R'和R)。然而,由于遮挡和照明条件,霍夫线(以及因此所有下游轮廓和线段)是不完整的(R 我正在考虑的一个策略如下。 Foreach在 R 中检测到矩形轮廓 r : 1-使用 fitLine()查找通过 r 中心的垂直和水平线(参见下面的代码和图片) 2-创建一个与源矩形相同大小和旋转的蒙版,并沿着(1)中定义的线移动,如果在同一区域中没有先前检测到的轮廓,则绘制与源相同的形状矩形 我的问题是: 谢谢rect = cv2.minAreaRect(r)
box = cv2.boxPoints(rect)
box = np.int0(box)
cx = np.int0(rect[0][0])
cy = np.int0(rect[0][1])
w = np.int0(rect[1][0])
h = np.int0(rect[1][1])
cv2.drawContours(img,[box],0,255,1)
[vx,vy,x,y] = cv2.fitLine(box, cv2.DIST_L2,0,0.01,0.01)
lefty = int((-x*vy/vx) + y)
righty = int(((cols-x)*vy/vx)+y)
start = (cols-1,righty)
end = (0,lefty)
cv2.line(img,start,end,255,1)
# HORIZONTAL
nx,ny = 1,-vx/vy
mag = np.sqrt((1+ny**2))
vx,vy = nx/mag,ny/mag
# Now find two extreme points on the line to draw line
lefty = int((-x*vy/vx) + y)
righty = int(((cols-x)*vy/vx)+y)
start = (cols-1,righty)
end = (0,lefty)
cv2.putText(img,'start',(start[0]-60,start[1]),font,0.5,255,1)
cv2.putText(img,'end',end,font,0.5,255,1)
cv2.line(img,start,end,255,1)