Hough线段检测

转载 2012年03月29日 19:05:49
/* This is a standalone program. Pass an image name as a first parameter of the program.
Switch between standard and probabilistic Hough transform by changing "#if 1" to "#if 0" and back */
#include <cv.h>
#include <highgui.h>
#include <math.h>

int main(int argc, char** argv)
{
    const char* filename = argc >= 2 ? argv[1] : "pic11.png";
    IplImage* src = cvLoadImage( filename, 0 );
    IplImage* dst;
    IplImage* color_dst;
    CvMemStorage* storage = cvCreateMemStorage(0);
    CvSeq* lines = 0;
    int i;

    if( !src )
    return -1;

    dst = cvCreateImage( cvGetSize(src), 8, 1 );
    color_dst = cvCreateImage( cvGetSize(src), 8, 3 );

    cvCanny( src, dst, 50, 200, 3 );
    cvCvtColor( dst, color_dst, CV_GRAY2BGR );
    #if 0
    lines = cvHoughLines2( dst, storage, CV_HOUGH_STANDARD, 1, CV_PI/180, 100, 0, 0 );

    for( i = 0; i < MIN(lines->total,100); i++ )
    {
        float* line = (float*)cvGetSeqElem(lines,i);
        float rho = line[0];
        float theta = line[1];
        CvPoint pt1, pt2;
        double a = cos(theta), b = sin(theta);
        double x0 = a*rho, y0 = b*rho;
        pt1.x = cvRound(x0 + 1000*(-b));
        pt1.y = cvRound(y0 + 1000*(a));
        pt2.x = cvRound(x0 - 1000*(-b));
        pt2.y = cvRound(y0 - 1000*(a));
        cvLine( color_dst, pt1, pt2, CV_RGB(255,0,0), 3, CV_AA, 0 );
    }
    #else
    lines = cvHoughLines2( dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 50, 50, 10 );
    for( i = 0; i < lines->total; i++ )
    {
        CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);
        cvLine( color_dst, line[0], line[1], CV_RGB(255,0,0), 3, CV_AA, 0 );
    }
    #endif
    cvNamedWindow( "Source", 1 );
    cvShowImage( "Source", src );

    cvNamedWindow( "Hough", 1 );
    cvShowImage( "Hough", color_dst );

    cvWaitKey(0);

    return 0;
} 

相关文章推荐

虹膜识别(四):hough变换检测外圆

前面利用hough变换检测圆的办法检测出虹膜内圆,现在用同样的方法来检测外圆,不过在检测时需要对图像进行预处理。 在进行Hough变换检测,我们说输入的图像需要是进行处理过的二值轮廓图像,并且轮廓点...
  • on2way
  • on2way
  • 2014-11-06 17:29
  • 2343

霍夫森林(Hough Forest)目标检测算法

转自 http://blog.csdn.net/gxf1027/article/details/8308655  留着学习 Hough Forest目标检测一种比较时兴的目标检测算法,Juerg...
  • zxdxyz
  • zxdxyz
  • 2013-10-29 21:09
  • 3216

hough变换是如何检测出直线和圆的?

看了很多别人的博文,发现这篇文章讲解Hough变换讲得最清楚,分享一下 原文地址:  http://blog.163.com/yuyang_tech/blog/static/2160500832...

Hough变换——直线检测(投票方法实现)

Hough变换介绍 Hough变换介绍:    简单来说,就是一个叫做Hough的人提出的,主要是将空间坐标转换到参数空间。比如一条直线:y = kx + b吧,我们看到这个后就会想到用x,y两个轴,...

Hough变换检测直线

1.普通霍夫变换HoughLines 霍夫变换中,直线用下述方程来表示:ρ=cosθ+sinθ; //使用霍夫变换检测直线 #include #include using name...

Python下opencv使用笔记(十一)(详解hough变换检测直线与圆)

在数字图像中,往往存在着一些特殊形状的几何图形,像检测马路边一条直线,检测人眼的圆形等等,有时我们需要把这些特定图形检测出来,hough变换就是这样一种检测的工具。Hough变换的原理是将特定图形上的...
  • on2way
  • on2way
  • 2015-07-23 21:27
  • 9268

霍夫森林(Hough Forest)目标检测算法

Hough Forest目标检测一种比较时兴的目标检测算法,Juergen Gall在2009的CVPR上提出。     Hough Forest听上去像hough变换+Random Forest的...

OpenCV2马拉松第23圈——圆检测与通用Hough变换

计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27220445 看本文前,建议先去看Ope...

Hough变换原始形式-直线检测

Hough变换原始形式-直线检测标签(空格分隔): 数字图像处理 图像特征提取 注意,本文在总结过程中,参考了许多其他绘图,每种情况下使用的符号不太一致,所以,每个小节使用的符号都仅以各小节图...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)