Opencv画延长线

2024-04-07 11:08
文章标签 opencv 延长线

本文主要是介绍Opencv画延长线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自   http://blog.csdn.net/abcjennifer/article/details/7440887

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变换检测+延长线(绿:检测结果。黄:延长线)




这篇关于Opencv画延长线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882435

相关文章

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性