【blog算法原理】Opencv中直线的表示方法
 一、问题的提出:​       
  在实际项目编写过程中,需要对直线(Line)进行特定的处理。在以前的项目设计实现中,直线(Line)多是用来绘图使用的,而不是用来进行分析的。
  经过较为仔细地研究Opencv提供的相关内容,感觉这个问题很有搞头,所以分离出来研究。先看refman
 
 
 
 
 
可以看到,opencv自己提供的3种直线寻找的函数,最后得到的表示line的数据结构和表示内容的表示都是不一样的。出现这个原因,可能是因为编写这几个函数的不是一个开发者;也可能是认为地选择了最适合特定函数使用的数据结构。那么这3个函数效果到底怎么样?如何灵活使用到自己的项目中?最后我将提出结合自己实际编写的函数。
 
二、函数测试
由于后2个函数都能够直接以图像(MAT)作为参数,所以用一副标准图像进行测试;而后针对Linefit能够以点集作为输入的情况单独测试(如果要使用同样的图像需要先细化再找边缘,比较麻烦),并且提出自己编写的方法。
测试图像为
编写代码
#);
    board , CV_PI, , ,  );
    , CV_PI, , ,  );
    ; i ], l[]), Point(l[], l[]), Scalar(), , CV_AA);
    }
    ; i ], theta ];
        Point pt1, pt2;
        ),, CV_AA);
    }
    imshow("src",src);
    waitKey();
}
 
结果
(HoughLineP)
 
(HoughLine)
从结果上来看,HoughlineP识别的要更准确。这两个函数一个是识别出来图形上的点,一个是识别出来角度和图像上的点。两个函数的结果都是自己编写代码打印出来的。
 
三、结合实际
实际上我需要的是识别出直线,并且对图像进行旋转。这部分的代码是这样的
       Point pt1;
    Point pt2;
    ] ]]]]]]]),, CV_AA);
    , src.rows );]]);
    angle   );
    /// 旋转已扭曲图像
    warpAffine( src, dst, rot_mat, src.size() );

Opencv中直线的表示方法的更多相关文章

  1. 使用Opencv中matchTemplate模板匹配方法跟踪移动目标

    模板匹配是一种在图像中定位目标的方法,通过把输入图像在实际图像上逐像素点滑动,计算特征相似性,以此来判断当前滑块图像所在位置是目标图像的概率. 在Opencv中,模板匹配定义了6种相似性对比方式: C ...

  2. Opencv中常见的滤波方法

    滤波(模糊)的概念和作用: 图像滤波增强处理实质上就是运用滤波技术来增强图像的某些空间频率特征,以改善地物目标与领域或背景之间的灰度反差. 遥感系统成像过程中可能产生的”模糊”作用,常使遥感图像上某些 ...

  3. 算法+OpenCV】基于opencv的直线和曲线拟合与绘制(最小二乘法)

    http://blog.csdn.net/guduruyu/article/details/72866144 最小二乘法多项式曲线拟合,是常见的曲线拟合方法,有着广泛的应用,这里在借鉴最小二乘多项式曲 ...

  4. 图像滤波与OpenCV中的图像平滑处理

    .About图像滤波 频率:可以这样理解图像频率,图像中灰度的分布构成一幅图像的纹理.图像的不同本质上是灰度分布规律的不同.但是诸如"蓝色天空"样的图像有着大面积近似的灰度强度,而 ...

  5. opencv中的.at方法

    opencv中的.at方法是用来获取图像像素值得函数: interpolation:差值 histogram:直方图

  6. 在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法

    在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法   对于,在Linux系统下做图像识别,不像在windows下面我们可以利用Matlab中的图像工具箱来实现,我们必须借助Ope ...

  7. OpenCV 中获取图像或矩阵最大、最小值的简便方法

    C++: void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc ...

  8. [OpenCV-Python] OpenCV 中摄像机标定和 3D 重构 部分 VII

    部分 VII摄像机标定和 3D 重构 OpenCV-Python 中文教程(搬运)目录 42 摄像机标定 目标 • 学习摄像机畸变以及摄像机的内部参数和外部参数 • 学习找到这些参数,对畸变图像进行修 ...

  9. opencv2.4.13+python2.7学习笔记--OpenCV中的图像处理--图像轮廓

    阅读对象:无要求. 1.代码 ''' OpenCV中的轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化 ...

随机推荐

  1. Java数据类型和对象的引用

    在Java中,变量分为两类: 1.基本类型变量,java是传递的副本 2.一切对象型变量,传引用副本的实质是复制指向地址的指针 a.基本类型引用 public class BasicTransmit ...

  2. NSMutableDictionary中元素替换

    NSMutableDictionary *dic = [NSMutableDictionary new]; [dic addEntriesFromDictionary:@{@"key&quo ...

  3. 判断UpLoader是否安装了Flash

     var flashVersion = (function() {             var version;             try {                 version ...

  4. HTML基础-- 标签、表格

    <html>    --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body& ...

  5. Python之urllib2

    urllib2 - extensible library for opening URLs Note The urllib2 module has been split across several ...

  6. linux环境变量与本地变量

    两者不同的是. 环境变量可以在shell的子进程中使用, 而本地变量不同. 每当连接上服务器时,服务器就会通过帐号密码运行一个SHELL,我们所做的工作都在这个SHELL上,特殊方法除外(如,守护进程 ...

  7. springday05-go1

    新建web工程spring-netcross1.导入spring文件夹里的七个jar包,另外还要导入jdbc-lib的四个jar包,ojdbc.jar,commoms-pool,commons-dbc ...

  8. java经典小算法

    package com.shb.java; public class Demo4 { /**时间有限 先不写文字了 自己随便敲的 * @param args * @author shaobn */ p ...

  9. paper 93:OpenCV学习笔记大集锦

    整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...

  10. paper 83:前景检测算法_1(codebook和平均背景法)

    前景分割中一个非常重要的研究方向就是背景减图法,因为背景减图的方法简单,原理容易被想到,且在智能视频监控领域中,摄像机很多情况下是固定的,且背景也是基本不变或者是缓慢变换的,在这种场合背景减图法的应用 ...