图像变换(7):标准霍夫变换:HoughLines()函数

此函数可以找出采用标准霍夫变换的二值图像线条。在 OpenCV中,我们可以用其来调用标准霍夫变换SHT和多尺度霍夫变换 MSHT的 OpenCV内建算法。

第一个参数,InputArray类型的image,输入图像,即源图像。需为8位的单通道二进制图像,可以将任意的源图载入进来,并由函数修改成此格式后,再填在这里。
        第二个参数,InputArray类型的lines,经过调用HoughLines函数后储存了霍夫线变换检测到线条的输出矢量。每一条线由具有两个元素的矢量( p,0 )表示,其中,p是离坐标原点(0,0)(也  就是图像的左上角)的距离,0是弧度线条旋转角度(О度表示垂直线,Tt/2度表示水平线)。
        第三个参数,double类型的 rho,以像素为单位的距离精度。另一种表述方式是直线搜索时的进步尺寸的单位半径。(Latex 中/rho即表示p )
        第四个参数,double类型的theta,以弧度为单位的角度精度。另一种表述方式是直线搜索时的进步尺寸的单位角度。
        第五个参数,int类型的threshold,累加平面的阈值参数,即识别某部分为图中的一条直线时它在累加平面中必须达到的值。大于阈值 threshold的线段才可以被检测通过并返回到结果中。
        第六个参数,double类型的srn,有默认值0。对于多尺度的霍夫变换,这是第三个参数进步尺寸rho 的除数距离。粗略的累加器进步尺寸直接是第三个参数rho,而精确的累加器进步尺寸为rho/srn。
        第七个参数,double类型的 stn,有默认值0,对于多尺度霍夫变换,srn表示第四个参数进步尺寸的单位角度theta的除数距离。且如果srn和 stn同时为0,就表示使用经典的霍夫变换。否则,这两个参数应该都为正数。

学完函数解析后,看一个以HoughLines为核心的示例程序,就可以全方位了解 HoughLines函数的使用方法。

代码如下:

#include <opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include"opencv2/highgui/highgui.hpp"
#include<opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/utils/logger.hpp>
#include<iostream>
#include<time.h>
using namespace std;
using namespace cv;int main()
{cv::utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);//控制台不在输出日志文件Mat srcImage = imread("E:/pictures/2.jpg");Mat midImage, dstImage;Canny(srcImage, midImage, 50, 200, 3);cvtColor(midImage, dstImage, COLOR_GRAY2BGR);vector<Vec2f>lines;HoughLines(midImage, lines, 1, CV_PI / 180, 150, 0, 0);for (size_t i = 0; i < lines.size(); i++){float rho = lines[i][0], theta = lines[i][1];Point 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));line(dstImage, pt1, pt2, Scalar(55, 100, 195), 1, LINE_AA);}imshow("【原始图】", srcImage);imshow("【边缘检测后的图】", midImage);imshow("【效果图】", dstImage);waitKey(0);return 0;}

运行截图:

 

OpenCV学习(53)相关推荐

  1. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  2. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  3. youcans 的 OpenCV 学习课—6.灰度变换与直方图处理

    youcans 的 OpenCV 学习课-6.灰度变换与直方图处理 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 空间域的图像处理方法直接对图像的像素点进行处理,空间域图 ...

  4. opencv学习笔记06

    原创:opencv学习笔记06 OpenCV-Python教程:50.理解k-近邻 https://www.jianshu.com/p/404e329e4e80 OpenCV里的kNN 1 2 3 4 ...

  5. opencv学习笔记02

    原创博文地址:opencv学习笔记02 OpenCV-Python教程:11.图片阈值 https://www.jianshu.com/p/267a32ad0a23 cv2阈值处理:https://b ...

  6. 某人写的openCV学习笔记

    原文地址:某人写的openCV学习笔记作者:拔剑 http://blog.csdn.net/thefutureisour 我的OpenCV学习笔记(25):c++版本的高斯混合模型的源代码完全注释 之 ...

  7. 某人写的openCV学习笔记_拔剑-浆糊的传说_新浪博客

    http://blog.csdn.net/thefutureisour 我的OpenCV学习笔记(25):c++版本的高斯混合模型的源代码完全注释 之前看到过C版本的,感觉写的很长,没有仔细看,但是C ...

  8. OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法...

    函数中的代码是部分代码,详细代码在最后 1 cv2.boundingRect 作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界. cv2.boundingRect(arr ...

  9. opencv学习笔记(二):基于肤色的人手检测

    opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...

  10. Python+OpenCV学习(17)---摄像机标定

    Python+OpenCV学习(17)---摄像机标定 原文:http://blog.csdn.net/firemicrocosm/article/details/48594897 利用python学 ...

最新文章

  1. Gene co-expression analysis for functional classification and gene–disease predictions 基因共表达分析的功能分类
  2. 获取设备IMEI ,手机名称,系统SDK版本号,系统版本号
  3. C语言能否写windows应用程序,C语言能写windows的窗口吗?
  4. Jibx Jersey2集成
  5. [转]xargs详解
  6. 前端学习(584):在dom中调试节点
  7. 多元有序logistic回归分析_一文详述:观察性研究中的logistic回归分析思路
  8. Oracle的逆向工程generatorConfig
  9. IE6下PNG图片透明效果(PNG图片做背景也可以)
  10. RHEL6.2手动封装rpm源码包安装星际译王
  11. scrapy splash 爬取图片学习心得
  12. PHP中多维数组var_dump展示不全
  13. Ubuntu中ssh远程报错:packet_write_wait: Connection to 192.168.163.190 port 22: Broken pipe lost connection
  14. linux离线安装yum源
  15. 智慧城市大数据应用案例
  16. 犹太人很会赚钱?一老板用犹太人的思维做生意,一年赚了200多万!
  17. c++做的免费游戏狼人杀
  18. Matlab 2018a中文版下载方法
  19. 计算机怎样发现路由器上u盘,路由器上USB插口的4大功能,估计你连一个都没用过...
  20. modbus 调试经验

热门文章

  1. 不动点定理的及其有趣应用
  2. GBase数据库事务并发控制
  3. 知乎刷爆朋友圈的H5,回答了周源年初提出的几个问题
  4. Hystrix Dashboard使用及面板参数详述
  5. java计算机毕业设计酒店信息管理源码+mysql数据库+系统+lw文档+部署
  6. F5服务器负载均衡测试方案
  7. Lucene6入门教程(一)简介和学习流程
  8. php网页表格制作,如何制作html表格的边框?HTML table表格制作及实例
  9. 编程语言中的 DUCK TYPING|python、c++、java、go
  10. java中最高与最低_气温的年变化幅度称为年较差。它是指一年中 的最高值与最低值之差。...