概率霍夫变换是一种基于泛洪算法的直线检测算法。相较于传统霍夫变换,概率霍夫变换可以在保证一定的精度前提下,大大提高了直线检测效率。下面是  OpenCV  C++  实现概率霍夫检测的示例代码:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{Mat src, dst, color_dst;if (argc != 2 || !(src = imread(argv[1], IMREAD_GRAYSCALE)).data)return -1;Canny(src, dst, 50, 200, 3);cvtColor(dst, color_dst, COLOR_GRAY2BGR);vector4i> lines;HoughLinesP(dst, lines, 1, CV_PI / 180, 50, 50, 10);for (size_t i = 0; i < lines.size(); i++){Vec4i l = lines[i];line(color_dst, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0, 0, 255), 3, LINE_AA);}namedWindow("Source", WINDOW_NORMAL);imshow("Source", src);namedWindow("Detected Lines", WINDOW_NORMAL);imshow("Detected Lines", color_dst);waitKey(0);return 0;
}

代码解释如下:

-  首先读入一张灰度图片并进行  Canny  边缘检测。

-  然后调用`cv::HoughLinesP`  函数进行概率霍夫检测,检测到的直线存储在`std::vector<Vec4i>`  中。

对于  HoughLinesP  函数几个参数的含义:

-`dst`:输入图像;
-`lines`:输出的直线集合;
-`1`:表示直线的检测步长,单位为像素;
-`CV_PI  /  180`:表示角度的检测步长,单位为弧度;
-`50`:表示累加阈值,累加值低于该值则被丢弃;
-`50`:表示最小线段长度,小于该值的线条会被丢弃;
-`10`:表示最大线段间隙,同一条线段中断的间隙超过该值则会被分为两条线段。

-  最后,将检测到的直线可视化,并显示原始灰度图和检测结果。

注意,我们使用`Vec4i`  类型来存储概率霍夫检测得到的直线。`Vec4i`  是一个长度为  4  的定长向量,分别表示直线的起点和终点坐标。

OpenCV——概率霍夫检测相关推荐

  1. OpenCV中的霍夫线变换、概率霍夫线变换

    OpenCV中的霍夫线变换.概率霍夫线变换 1. 效果图 2. 原理 2.1 什么是霍夫变换? 2.2 什么是概率霍夫变换? 3. 源码 3.1 霍夫变换 3.2 概率霍夫变换 参考 这篇博客将介绍P ...

  2. OpenCV标准霍夫直线检测详解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:OpenCV学堂 霍夫直线检测 对于图像来说可以从笛卡 ...

  3. OpenCV中霍夫圆检测

    OpenCV中霍夫圆检测 在直线检测中,变换后在r−θr-\thetar−θ空间内曲线交点,然后根据阈值来得到直线.在圆中需要有三个变量圆心坐标和半径,因此变换后的空间在三维空间,根据三维空间中的曲线 ...

  4. opencv使用霍夫圆算法HoughCircles进行圆检测

    原理介绍: opencv -- HoughCircles 霍夫圆变换原理及圆检测 霍夫变换(Hough Transform) 霍夫变换 - 圆检测 (Hough Circle transform) 霍 ...

  5. [图像识别]8.OpenCV的模板匹配和霍夫检测

    回顾,上节课你学了什么?  Sobel_x_or_y=cv.Sobel(img,ddepth,dx,dy,dst,ksize,scale,delta,borderType) 常用 Sobel_x_or ...

  6. Opencv 霍夫变换 霍夫圆检测

    霍夫变换是一种特征提取术,在了解霍夫变换 霍夫检测之前 需要首先明白什么是霍夫空间:以圆形举例子,弄明白形状的原理,直线的变换与检测也就不难理解 霍夫空间,是一种三维空间,三个坐标分别为圆的横纵坐标, ...

  7. OpenCV中霍夫直线变换

    OpenCV中霍夫直线变换 首先要知道,一条直线的通用表达式为y=ax+b\color{#F00}y=ax+by=ax+b,a为直线的斜率,b为直线的截距,知道这两个参数可以唯一确定一条直线.通常我们 ...

  8. matlab中霍夫线检测函数,matlab 霍夫检测

    %霍夫检测 BW=imread('lexp_1_2.bmp'); BW=rgb2gray(BW); thresh=[0.01,0.17]; sigma=2;%定义高斯参数 f = edge(doubl ...

  9. OpenCv 练习题 霍夫(Hough)变换

    霍夫(Hough)变换 题目:计算黑子之间的距离与白字之间的距离,得到两个最大值,运用直线画出连接两段距离最大的黑子和白子的直线,运用hough直线检验出棋盘的中本来的黑线,以不同颜色画出. from ...

最新文章

  1. 【分治的典型应用:归并排序】
  2. Linux查看某个进程的启动时间
  3. c# Linq实现 获得某一个路径下所有文件的名(不含扩展名)
  4. 三大挑战将扼杀你的物联网解决方案!
  5. 全国宏观经济指标(图表以及相应的大致注释)
  6. 怎么把知网的外文文献翻译成中文_知网查重中文译成英文可行吗?
  7. Win11控制面板里没有高清音频管理器怎么办?
  8. 十行python代码定时给微信好友发送晚安,自动应答--python云舔狗
  9. 存进销系统 c语言大作业,c语言,程序设计大题,*纳税以系统(2)求法,求解...
  10. 【阿里云服务器】ECS云服务器新手上路
  11. 【转载】浅析金庸武侠小说中的哲理意蕴
  12. kindle忘记密码怎么办_如果您的Kindle丢失或被盗怎么办
  13. 用批处理删除N天前或指定日期时间(前后)创建(或修改)的文件
  14. Qt5把图片如何导出为pdf再到剪切板
  15. WebRTC系列-移动端硬件编码支持Simulcast
  16. 七种影视截图截屏小方法
  17. 卡罗拉 (COROLLA) - 仪表盘
  18. 硬石YS-F1Pro开发板HAL库例程持续更新\2. 软件设计之高级裸机例程(HAL库版本)\YSF1_HAL-121. MH-Z14A二氧化碳传感器模块
  19. 解决windows上鼠标右键新建没有文本文档的选项
  20. MySQL基本查询操作(学习日记)

热门文章

  1. laravel MPDF打印
  2. 出售黄金外汇交易平台,商机就是投机!
  3. Proto(协议缓冲区)
  4. Camera Tunning调试相关
  5. 品尝棉花糖之Nexus5线刷Android6.0攻略
  6. idea package自动生成_Idea 自动生成Junit单元测试插件JunitGenerator
  7. Python的imread()函数
  8. 基于1DCNN(一维卷积神经网络)的机械振动故障诊断
  9. SQLServer-日期-DATEPART 函数-返回(年或月或日等)日期单独部分
  10. Hibernate三种状态(Transient、Persistent、Detached)各种保存(save,persist,update,saveOrUpdte,merge,flush,lock)区别