OpenCV——概率霍夫检测
概率霍夫变换是一种基于泛洪算法的直线检测算法。相较于传统霍夫变换,概率霍夫变换可以在保证一定的精度前提下,大大提高了直线检测效率。下面是 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——概率霍夫检测相关推荐
- OpenCV中的霍夫线变换、概率霍夫线变换
OpenCV中的霍夫线变换.概率霍夫线变换 1. 效果图 2. 原理 2.1 什么是霍夫变换? 2.2 什么是概率霍夫变换? 3. 源码 3.1 霍夫变换 3.2 概率霍夫变换 参考 这篇博客将介绍P ...
- OpenCV标准霍夫直线检测详解
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:OpenCV学堂 霍夫直线检测 对于图像来说可以从笛卡 ...
- OpenCV中霍夫圆检测
OpenCV中霍夫圆检测 在直线检测中,变换后在r−θr-\thetar−θ空间内曲线交点,然后根据阈值来得到直线.在圆中需要有三个变量圆心坐标和半径,因此变换后的空间在三维空间,根据三维空间中的曲线 ...
- opencv使用霍夫圆算法HoughCircles进行圆检测
原理介绍: opencv -- HoughCircles 霍夫圆变换原理及圆检测 霍夫变换(Hough Transform) 霍夫变换 - 圆检测 (Hough Circle transform) 霍 ...
- [图像识别]8.OpenCV的模板匹配和霍夫检测
回顾,上节课你学了什么? Sobel_x_or_y=cv.Sobel(img,ddepth,dx,dy,dst,ksize,scale,delta,borderType) 常用 Sobel_x_or ...
- Opencv 霍夫变换 霍夫圆检测
霍夫变换是一种特征提取术,在了解霍夫变换 霍夫检测之前 需要首先明白什么是霍夫空间:以圆形举例子,弄明白形状的原理,直线的变换与检测也就不难理解 霍夫空间,是一种三维空间,三个坐标分别为圆的横纵坐标, ...
- OpenCV中霍夫直线变换
OpenCV中霍夫直线变换 首先要知道,一条直线的通用表达式为y=ax+b\color{#F00}y=ax+by=ax+b,a为直线的斜率,b为直线的截距,知道这两个参数可以唯一确定一条直线.通常我们 ...
- matlab中霍夫线检测函数,matlab 霍夫检测
%霍夫检测 BW=imread('lexp_1_2.bmp'); BW=rgb2gray(BW); thresh=[0.01,0.17]; sigma=2;%定义高斯参数 f = edge(doubl ...
- OpenCv 练习题 霍夫(Hough)变换
霍夫(Hough)变换 题目:计算黑子之间的距离与白字之间的距离,得到两个最大值,运用直线画出连接两段距离最大的黑子和白子的直线,运用hough直线检验出棋盘的中本来的黑线,以不同颜色画出. from ...
最新文章
- 【分治的典型应用:归并排序】
- Linux查看某个进程的启动时间
- c# Linq实现 获得某一个路径下所有文件的名(不含扩展名)
- 三大挑战将扼杀你的物联网解决方案!
- 全国宏观经济指标(图表以及相应的大致注释)
- 怎么把知网的外文文献翻译成中文_知网查重中文译成英文可行吗?
- Win11控制面板里没有高清音频管理器怎么办?
- 十行python代码定时给微信好友发送晚安,自动应答--python云舔狗
- 存进销系统 c语言大作业,c语言,程序设计大题,*纳税以系统(2)求法,求解...
- 【阿里云服务器】ECS云服务器新手上路
- 【转载】浅析金庸武侠小说中的哲理意蕴
- kindle忘记密码怎么办_如果您的Kindle丢失或被盗怎么办
- 用批处理删除N天前或指定日期时间(前后)创建(或修改)的文件
- Qt5把图片如何导出为pdf再到剪切板
- WebRTC系列-移动端硬件编码支持Simulcast
- 七种影视截图截屏小方法
- 卡罗拉 (COROLLA) - 仪表盘
- 硬石YS-F1Pro开发板HAL库例程持续更新\2. 软件设计之高级裸机例程(HAL库版本)\YSF1_HAL-121. MH-Z14A二氧化碳传感器模块
- 解决windows上鼠标右键新建没有文本文档的选项
- MySQL基本查询操作(学习日记)
热门文章
- laravel MPDF打印
- 出售黄金外汇交易平台,商机就是投机!
- Proto(协议缓冲区)
- Camera Tunning调试相关
- 品尝棉花糖之Nexus5线刷Android6.0攻略
- idea package自动生成_Idea 自动生成Junit单元测试插件JunitGenerator
- Python的imread()函数
- 基于1DCNN(一维卷积神经网络)的机械振动故障诊断
- SQLServer-日期-DATEPART 函数-返回(年或月或日等)日期单独部分
- Hibernate三种状态(Transient、Persistent、Detached)各种保存(save,persist,update,saveOrUpdte,merge,flush,lock)区别