opencv 画延长线
hough变换可以让我们检测到直线,这在前面已有详解,对于车道检测,我们需要其到图像边界的延长线一遍之后数据帧分析。
以下代码帮助我们在opencv中画延长线,本来想用虚线表示延长线的,无奈参数调不好了……只好把bug的虚线贴上去注释掉了,希望牛人能给点帮助帮我调下吧
其他的代码部分可供参考
- void CCVMFCView::OnDottedLine(CvPoint p1,CvPoint p2,IplImage *workimg)
- {
- double k=(p2.y-p1.y)/(p2.x-p1.x+0.000001);
- double DOT_STEP;
- CvPoint pa=p1,pb=p1;
- cvLine(workimg,p1,p2,CV_RGB(255,255,0),3, CV_AA, 0 );
- //dotted line , has bug ╮(╯_╰)╭
- //while(pb.x>0&&pb.x<workimg->width&&pb.y<p2.y)
- //{
- // pb.x+=DOT_STEP;
- // pb.y+=DOT_STEP*k;
- // cvLine(workimg,pa,pb,CV_RGB(255,255,0),3, CV_AA, 0 );
- // pb.x+=DOT_STEP;
- // pb.y+=DOT_STEP*k;
- // pa=pb;
- // pb.x+=DOT_STEP;
- // pb.y+=DOT_STEP*k;
- //}
- }
- // find two endpoint of the faint line
- void CCVMFCView::OnDrawDotline(CvPoint s, CvPoint e,IplImage *workimg)
- {
- CvPoint pa,pb;
- if(s.y>e.y)//swap
- {
- pa=s;
- s=e;
- e=pa;
- }
- double k=(e.y-s.y)/(e.x-s.x+0.000001);
- double h=workimg->height,w=workimg->width;
- pb=s;
- pa.y=0,pa.x=s.x-s.y/k; //start point on the low line
- if(pa.x<0) //start point on the left line
- pa.x=0, pa.y=k*s.x;
- else if(pa.x>=w)
- pa.x=w, pa.y=s.y+k*(w-s.x);
- OnDottedLine(pb,pa,workimg);
- pa=pb=e;
- pb.y=h; pb.x+=(h-e.y)/k;
- if(pb.x>w)
- pb.y=e.y+k*(w-e.x), pb.x=w;
- else if(pb.x<0)
- pb.y=e.y-k*e.x, pb.x=0;
- OnDottedLine(pa,pb,workimg);
- }
实验结果:
原图:

车道检测结果:

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

from: http://blog.csdn.net/abcjennifer/article/details/7440887
opencv 画延长线的更多相关文章
- 学习OpenCV——用OpenCv画漫画
闲的时候用OpenCV画漫画也挺有意思,虽然效果不好(达不到上面所实现的效果), 参数需要调整,还是大头贴而且噪声小的图像比较合适 而且可以熟悉一下关于各种滤波的操作比如:双边滤波: #include ...
- 使用OpenCV画折线图
使用OpenCV画直方图是一件轻松的事情,画折线图就没有那么Easy了,还是使用一个库吧: GraphUtils 源代码添加入工程 原文链接:http://www.360doc.com/content ...
- python3 使用opencv 画基本图形
在Python3 环境下安装opencv-python 后练习画基本图形: import numpy as np import cv2 # BGR format GREEN = (0, 255, 0) ...
- opencv画出轮廓外接矩形
Mat cannyImage; /// Detect edges using canny Canny(src, cannyImage, , , ); vector<vector<Point ...
- opencv 震撼你的视觉-------基础篇
opencv 最近在做一个钓鱼网站的项目中用到了一个叫opencv的玩意儿,以前没接触过.感觉挺新鲜的,而且项目中要用,所以就问了一下度娘(是想Google一下的,显得高大上and专业一点,但是英语水 ...
- Python OpenCV —— geometric
用OpenCV画几何图形. import numpy as np import cv2 # Create a black image img = np.zeros((521,512,3), np.ui ...
- opencv实现坐标旋转(教你框住小姐姐)
一.项目背景 最近在做一个人脸检测项目,需要接入百度AI的系统进行识别和检测.主要流程就是往指定的URL上post图片上去,之后接收检测结果就好了. 百度的检测结果包含这样的信息: left - 人脸 ...
- Python+OpenCV图像处理(十五)—— 圆检测
简介: 1.霍夫圆变换的基本原理和霍夫线变换原理类似,只是点对应的二维极径.极角空间被三维的圆心和半径空间取代.在标准霍夫圆变换中,原图像的边缘图像的任意点对应的经过这个点的所有可能圆在三维空间用圆心 ...
- 【python+opencv】直线检测+圆检测
Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...
随机推荐
- Hadoop2安装
http://wenku.baidu.com/view/fe1b2f22de80d4d8d15a4f6e.html http://wenku.baidu.com/view/e4607031581b6b ...
- 驱动makefile
1 ifeq ($(KERNELRELEASE),) 2 CURRENT_PATH=$(shell pwd) 3 #KERNEL_DIR:=/lib/modules/$(shell uname - ...
- visuall assist x 破解方法
visuall assist x 破解方法 试用期过了后,不管怎么装,或者是找网上的KEY都不行,所以试了一下的方法,成功了: 1.先下载Visual Assist X 10.6.1845.0 2 ...
- iOS多线程编程Part 1/3 - NSThread & Run Loop
前言 多线程的价值无需赘述,对于App性能和用户体验都有着至关重要的意义,在iOS开发中,Apple提供了不同的技术支持多线程编程,除了跨平台的pthread之外,还提供了NSThread.NSOpe ...
- iOS 进阶 第十一天(0411)
0411 UItaBbar的结构 每一个数组都有一个方法,那就是下面这个,如下图所示: 如果想看系统控件是怎么构成的,那么就采用遍历其子控件的方式来做,如上一图中所示 在iOS7及其以后的系统里,控制 ...
- return的用法
1.一般的就是用在有返回值的方法中,用来返回方法指定类型的值,同时结束方法执行: 2.可以用在返回值为void的方法中,用来终止方法运行:
- MySQL、SqlServer、Oracle三大主流数据库分页查询
在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法.可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应用 ...
- Careercup - Facebook面试题 - 23869663
2014-05-02 03:37 题目链接 原题: A string is called sstring if it consists of lowercase english letters and ...
- 高质量的javascript代码 -- 深入理解Javascript
一. 编写高质量的javascript代码基本要点a) 可维护的代码(Writing Maintainable Code)i. 可读(注释)ii. 一致(看上去是同一个人写的)iii. 已记录b) 最 ...
- C++拷贝构造函数详解(转载)
一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员 ...