如何改善图像的线条检测?

时间:2019-07-29 10:33:53

标签: python opencv image-processing

我需要帮助找出cv2.HoughLinesP参数以获得满意的线检测结果。

输入图像在这里:

input image

其中一张输出图像在这里:

output image

我已经遍历了各种rho,theta,阈值,minLineLength,maxLineGap值,但是结果都不令人满意。

for rho in range(1,100,10):
    for thetadiv in range(10,400,50):
        for threshold in range(1,50,5):
            for mL in range(5,100,5):
                for mG in range(1,5):
                    imout,tag=dump_pline(im1inv, rho, thetadiv, threshold, mL, mG)
                    cv2.imwrite(path+"\\"+tag+".jpg",mask)


def dump_pline(img, rho=1, thetadiv=100, threshold=10, mL=10, mG=5):
    im=np.copy(img)
    lines=cv2.HoughLinesP(im, rho=rho, theta=np.pi/thetadiv, threshold=threshold, minLineLength=mL, maxLineGap=mG)
    tag="rho-"+str(rho)+" thetadiv-"+str(thetadiv)+" threshold-"+str(threshold)+" mL-"+str(mL)+" mG-"+str(mG)
    print(tag)
    mask=np.zeros(im.shape[:2],dtype='uint8')
    mask.fill(255)
    a,b,c=lines.shape
    for i in range(a):
        cv2.line(mask,(lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]),(0,255,0), 1, cv2.LINE_AA)
    mask[mask<255]=0
    return mask, tag

我得到的大部分都是深色图像,根本与输入图像完全不同。

我该如何解决问题?

0 个答案:

没有答案