相信了解Hough直线检测的人都知道,它在工业生产中应用极广,是图像处理中十分基础的算法之一。本文的代码及算法可以通过设置阈值,检测一定的直线。什么也不多说,先看看效果图:
原图:
阈值参数设定:
二值化处理:
Hough直线检测结果:
上图中,通过设定直线最小长度10,可以确定当相邻的共线的点距离大于10个像素时,认为属于两个不同的直线段;设置清零阈值10,可以确定当长度较小的线段小于10个像素时,认为不属于直线,而是零碎的点。
具体的核心代码实现如下:
BOOL CMyHoughView::OnImageHoughLineDetect() { // TODO: Add your command handler code here CHoughTransDlg dlg; if(dlg.DoModal() == IDOK){ CMyHoughDoc* pDoc=GetDocument(); //限制处理的图片为灰度图像 if(pDoc->m_bmpFile.m_PxlBytes==3) { AfxMessageBox("只能对灰度图像进行直线检测!