霍夫直线检测 opencv
本次实验是检测图像中的直线,用到了HoughLines()和HoughLinesP()函数,其中HoughLinesP()称为累计概率霍夫变换,实验结果显示累计概率霍夫变换要比标准霍夫变换的效果好。具体的参数介绍书中网上都有,可参照此博客https://www.cnblogs.com/skyfsm/p/6881686.html
#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std; Mat midImage, dstImage; // 临时变量和目标图的定义
void HoughLines_p();
int main()
{
//载入原图
Mat src = imread("D:/bei1.jpg");
namedWindow("原图", CV_WINDOW_AUTOSIZE);
imshow("原图", src);
//先进行边缘检测 在进行灰度变换
Canny(src, midImage, , , );
imwrite("D:/learn-opencv/can.jpg", midImage);
cvtColor(midImage, dstImage, CV_GRAY2BGR); //进行霍夫线变换
vector<Vec2f>lines; //定义一个矢量结构lines用于存放得到的线段矢量集合
HoughLines(midImage, lines, , CV_PI / , , , ); //依次在图中做出每条线段
for (size_t i = ; i < lines.size(); i++)
{
float r = lines[i][];
float theta = lines[i][]; Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a * r, y0 = b * r;
pt1.x = cvRound(x0 + * (-b));
pt1.y = cvRound(y0 + * (a));
pt2.x = cvRound(x0 - * (-b));
pt2.y = cvRound(y0 - * (a)); line(dstImage, pt1, pt2, Scalar(, , ), , LINE_AA);
} //HoughLines_p();累积概率【霍夫变换】
imshow("边缘检测后的图", midImage);
imshow("显示效果图", dstImage);
imwrite("D:/learn-opencv/dstImage.jpg", dstImage);
waitKey();
return(); } //累积概率【霍夫变换】
void HoughLines_p()
{
vector<Vec4i>lines;
HoughLinesP(midImage, lines, , CV_PI / , , , ); for (size_t i = ; i < lines.size(); i++)
{
Vec4i l = lines[i];
line(dstImage, Point(l[], l[]), Point(l[], l[]), Scalar(, , ), , LINE_AA);
}
}
显示效果:
1.原图

2.canny边缘检测效果图

3.标准霍夫变换图

4.累计概率霍夫变换图

霍夫直线检测 opencv的更多相关文章
- opencv:霍夫直线检测
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- Android开发中的OpenCV霍夫直线检测(Imgproc.HoughLines()&Imgproc.HoughLinesP())
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 //2017-04-21更新: 很多网友希望能得到源码,由于在公司做的,所以不太方便传出来 ...
- 霍夫圆检测 opencv
进行霍夫圆变换中有一个API:HoughCircles(). 第五个参数为double类型的minDist(),为霍夫变换检测到的圆的圆心之间的最小距离,即让算法能明显区分的两个不同圆之间的最小距离. ...
- OpenCV-Python 霍夫直线检测-HoughLinesP函数参数
cv2.HoughLines()函数是在二值图像中查找直线,cv2.HoughLinesP()函数可以查找直线段. cv2.HoughLinesP()函数原型: HoughLinesP(image, ...
- opencv:霍夫圆检测
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- opencv直线检测在c#、Android和ios下的实现方法
opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...
- Python+OpenCV图像处理(十四)—— 直线检测
简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...
- 【python+opencv】直线检测+圆检测
Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...
- opencv之霍夫曼变换
霍夫变换不仅可以找出图片中的直线,也可以找出圆,椭圆,三角形等等,只要你能定义出直线方程,圆形的方程等等. 不得不说,现在网上的各种博客质量真的不行,网上一堆文章,乱TM瞎写,误人子弟.本身自己就没有 ...
随机推荐
- Day3 Form表单
Day3 Form表单 一.form表单 :提交数据 表单在网页中主要负责数据采集功能,它用<form>标签定义. 用户输入的信息都要包含在form标签中,点击提交后,< ...
- CSS 笔记之 CSS 选择器
/*先设置背景再设置前景*/ pre{ background-color: #f8f8f8; border: solid 1px #ccc; border-radius: 3px; overflow: ...
- yii2.0安装ElasticSearch及使用
yii2.0安装ElasticSearch安装及使用教程:https://www.yiichina.com/tutorial/1046 Elasticsearch 权威指南(中文版):https:// ...
- Selenium 元素查找
1.尽量使用ID或者name去定位元素,如果这个元素没有ID或者Name,那么就是用它最近的父节点的ID或者Name去定位. 2.写自动化脚本不是一个人的事情,是一个团队的事情,合作能更好,更轻松得完 ...
- SpringBoot支持Xml数据格式显示
第一步:pom文件添加依赖 <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> < ...
- 初看Mybatis 源码 (二) Java动态代理类
先抛出一个问题,用过Mybatis的都知道,我们只需要定义一个Dao的接口,在里面写上一些CRUD相关操作,然后配置一下sql映射文件,就可以达到调用接口中的方法,然后执行sql语句的效果,为什么呢? ...
- jmeter之HTTP信息头管理器
信息头管理器作用: HTTP信息头管理器在Jmeter的使用过程中起着很重要的作用,通常我们在通过Jmeter向服务器发送http请求(get或者post)的时候,往往后端需要一些验证信息,比如说we ...
- httpclient使用head添加cookie
最近在使用接口时候,我使用get请求时,需要携带登录态,所以在get请求的时候我需要在head里面把cookie给加上,添加方式get和post完全不一样 Post方式添加cookie httpPos ...
- Android(java)学习笔记60:继承中父类 没有无参构造
1. 继承中父类 没有无参构造: package com.himi.test1; /* 如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢? 报错. 如何解决呢? A:在父类中加一个无参构造 ...
- 2017.10.25 Java List /ArrayList 三种遍历方法
java list三种遍历方法性能比较 学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入记录,然后遍历ArrayList,测试代码如下: pac ...