一种精度更高的hopf直线检测策略, 一种高精度边缘检测方法.


#aaa是cv.read图片.
img = aaaa.copy()
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

#cv2.imwrite("13里面二值化的图片.png", binary)   
# binary = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel, anchor=(2, 0), iterations=2)  # 二值化.
cv2.imwrite('debug1.png',binary)

# 可以看到处理后基本的文字方向.
#进行直线检测.



edges = cv2.Canny(binary, 50, 100, apertureSize=3)
# 霍夫曼直线检测
#cv2.imwrite('13里面的canny边缘化图片.png',edges )
edges=255-binary  #========我这里不适用canny来边缘检测,直接255减去他, 感觉精度更高.
gao=edges.shape[0]
chang=edges.shape[1]


cv2.imwrite('debug2.png',edges)

lines = cv2.HoughLinesP(edges, 0.1, 0.1*np.pi / 180, 1, minLineLength=(gao+chang)/100, maxLineGap=3)
                        #########0.01*pi是调优过的参数!!!!!!!!,我们只要比较长的线. 这些线更有标志性.

这里面我边缘检测使用了反色,255-. 这样做完的边缘检测, 保证了边缘的精度, 但是抗干扰能力变弱. 是这种好还是canny好, 可以自己测试. 如果图像精度足够, 推荐使用我这种边缘检测.

posted on 2024-05-20 20:22  张博的博客  阅读(10)  评论(0编辑  收藏  举报

导航