• opencv 画延长线


    hough变换可以让我们检测到直线,这在前面已有详解,对于车道检测,我们需要其到图像边界的延长线一遍之后数据帧分析。

    以下代码帮助我们在opencv中画延长线,本来想用虚线表示延长线的,无奈参数调不好了……只好把bug的虚线贴上去注释掉了,希望牛人能给点帮助帮我调下吧

    其他的代码部分可供参考

    [cpp] view plain copy
     
    1. void CCVMFCView::OnDottedLine(CvPoint p1,CvPoint p2,IplImage *workimg)  
    2. {  
    3.     double k=(p2.y-p1.y)/(p2.x-p1.x+0.000001);  
    4.     double DOT_STEP;  
    5.     CvPoint pa=p1,pb=p1;  
    6.       
    7.     cvLine(workimg,p1,p2,CV_RGB(255,255,0),3, CV_AA, 0 );  
    8.   
    9.     //dotted line , has bug        ╮(╯_╰)╭  
    10.   
    11.     //while(pb.x>0&&pb.x<workimg->width&&pb.y<p2.y)  
    12.     //{  
    13.     //  pb.x+=DOT_STEP;  
    14.     //  pb.y+=DOT_STEP*k;  
    15.     //  cvLine(workimg,pa,pb,CV_RGB(255,255,0),3, CV_AA, 0 );  
    16.     
    17.     //  pb.x+=DOT_STEP;  
    18.     //  pb.y+=DOT_STEP*k;  
    19.     //  pa=pb;  
    20.     //  pb.x+=DOT_STEP;  
    21.     //  pb.y+=DOT_STEP*k;  
    22.     //}  
    23. }  
    24.   
    25. // find two endpoint of the faint line  
    26. void CCVMFCView::OnDrawDotline(CvPoint s, CvPoint e,IplImage *workimg)  
    27. {  
    28.     CvPoint pa,pb;  
    29.     if(s.y>e.y)//swap  
    30.     {  
    31.         pa=s;  
    32.         s=e;  
    33.         e=pa;  
    34.     }  
    35.     double k=(e.y-s.y)/(e.x-s.x+0.000001);  
    36.     double h=workimg->height,w=workimg->width;  
    37.   
    38.     pb=s;  
    39.     pa.y=0,pa.x=s.x-s.y/k;          //start point on the low line  
    40.     if(pa.x<0)       //start point on the left line  
    41.         pa.x=0,     pa.y=k*s.x;  
    42.     else if(pa.x>=w)  
    43.         pa.x=w, pa.y=s.y+k*(w-s.x);  
    44.   
    45.     OnDottedLine(pb,pa,workimg);  
    46.   
    47.     pa=pb=e;  
    48.     pb.y=h; pb.x+=(h-e.y)/k;  
    49.     if(pb.x>w)  
    50.         pb.y=e.y+k*(w-e.x), pb.x=w;  
    51.     else if(pb.x<0)  
    52.         pb.y=e.y-k*e.x,     pb.x=0;  
    53.   
    54.     OnDottedLine(pa,pb,workimg);  
    55. }  


    实验结果:

    原图:

    车道检测结果:

    hough变换检测+延长线(绿:检测结果。黄:延长线)

    from: http://blog.csdn.net/abcjennifer/article/details/7440887

  • 相关阅读:
    vscode, cmake编译多个C++文件
    pytorch下的lib库 源码阅读笔记(1)
    pytorch学习笔记
    SSH无密码登录及远程拷贝命令SCP的使用
    Hadoop启动方式
    Hadoop出现的错误及处理
    Hadoop安装
    Hadoop生态系统图解
    shell脚本入门基础知识
    python中迷茫的编码问题
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/5374009.html
Copyright © 2020-2023  润新知