Hough(霍夫变换) 基于Opencv2.4.9 和VS2012平台下编写
霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由Paul Hough 首次提出[53],后于1972年由Richard Duda和Peter Hart推广使用[54],经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。
霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题,上一节中已经介绍了车道的直线特征,本节中给出hough变换检测直线在Opencv+VS2012平台下编写的结果及代码。
下面是全部代码:
原图:
// Hough.cpp : 定义控制台应用程序的入口点。
//霍夫变换检测
//yyx20125084014 姚永祥
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include<iostream>
#define PI 3.1415926
using namespace std;
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
//【1】读取房子图像的原始图片
Mat image = imread ("C:\\fangzi.jpg");
Mat result;
cvtColor (image,result,CV_BGRA2GRAY);
Mat contours;
//边缘检测
Canny (result,contours,125,350);
vector<Vec2f> lines;
//霍夫变换,获得一组极坐标参数(rho,theta),每一对对应一条直线,保存到lines
HoughLines (contours,lines,1,PI/180,260); //第3,4个参数表示在(rho,theta)坐标系里横纵坐标的最小单位,即步长
vector<Vec2f>::const_iterator it = lines.begin ();
cout<<lines.size ()<<endl;
while(it != lines.end()){
float rho = (*it)[0];
float theta = (*it)[1];
if(theta<PI/4.||theta>3.*PI/4){
//画交点在上下两边的直线
Point pt1(rho/cos(theta),0);
Point pt2((rho-result.rows*sin(theta))/cos(theta),result.rows);
line(image,pt1,pt2,Scalar(255),1);
}
else {
//画交点在左右两边的直线
Point pt1(0,rho/sin(theta));
Point pt2(result.cols,(rho-result.cols*cos(theta)/sin(theta)));
line(image,pt1,pt2,Scalar(255),1);
}
++it;
}
//【2】建立输出窗口
namedWindow ("hough");
imshow("hough",image);
//【3】对霍夫曼边缘特征提取后的图片进行保存
imwrite ("C:\\Houghjiance.jpg",image );
waitKey (0);
return 0;
}
结果图:
Hough(霍夫变换) 基于Opencv2.4.9 和VS2012平台下编写相关推荐
- **角点检测(Harris)基于Opencv2.4.9版本+VS2012开发平台进行编**
角点检测(Harris)基于Opencv2.4.9版本+VS2012开发平台进行编 角点检测 角点检测(Corner Detection)是计算机视觉系统中用来获得图像特征的一种方法,广泛应用于运动检 ...
- windows平台下基于QT和OpenCV搭建图像处理平台
在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...
- jeecgboot前端开发_一款基于代码生成器的Java快速开发平台【jeecg-boot】
原标题:一款基于代码生成器的Java快速开发平台[jeecg-boot] 今天给大家介绍一个后台脚手架框架:jeecg-boot 来看看官方怎么介绍的. 一款基于代码生成器的Java快速开发平台!全新 ...
- 计算机虚拟网络毕业论文,计算机毕业论文——基于WEB的虚拟计算机网络实验平台.doc...
PAGE Tianjin University of Technology and Education 毕 业 设 计 专 业: 计算机科学与技术 班级学号: 计0203班 – 11 学生姓名: 指导 ...
- 字节跳动:基于H.266/VVC的移动平台8K超高清实时解码实践 | QCon
网络视听服务的发展已经度过野蛮生长期,业界对音视频技术的探索也逐渐进入深水区. 目前来看,视频化及高清视频化的大趋势已势不可挡,在成本.体验.计算.传输等多个层面上给业界提出了日益增长的巨大挑战. 最 ...
- causal-learn:基于Python的因果发现算法平台
来源:集智俱乐部 本文约1100字,建议阅读5分钟 本文为你介绍基于Python的统一算法基本框架. Causal-learn,由CMU张坤老师主导,多个团队(CMU因果研究团队.DMIR实验室.宫明 ...
- 汉得宣布开源:基于容器的企业级应用 PaaS 平台
开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> 2018年5月20日,Choerodon猪齿鱼正式发布 0.5.0 版本,同时汉得公司宣布Choerodon猪齿鱼 ...
- 如何搭建基于容器的工业互联网PaaS平台
随着传统工业巨头的衰落和新兴"数字原生"企业的崛起,企业的竞争力正在被重新定义.对制造企业来说,硬件产品和实体资产已经不再是企业竞争力的必然保证.制造企业开始重新审视和定义自身的竞 ...
- 基于SSM实现校友录管理平台
项目编号:BS-PT-019 后台开发技术:SSM框架 前端开发技术:Bootstrap+Jquery+Ajax 开发工具:IDEA / ECLIPSE 基于MAVEN开发 数据库:MYSQL5.7 ...
最新文章
- Axis2 客户端调用 设置超时时间
- 06-Windows Server 2012 新特性 ---- Hyper-V实时迁移
- Python入门 io篇
- python中的日期与时间
- windows下程序开机自启动(任务计划程序)
- gitlab mysql 配置_gitlab的安装与修改端口配置
- 块级元素和行内元素的区别
- python如何查询数据库_python如何实现查询sql数据库并生成html文件?
- springmvc 源码分析
- Unity3d Shader开发(三)Pass(Fog )
- Java原生代码连接MySQL数据库
- ssh连接Linux很慢,且ssh传输文件很慢的解决方案
- java day40【会话技术:Cookie 、会话技术:Session 、JSP:入门学习】
- LeetCode() Reorder List
- ios 系统状态栏样式修改_iOS 导航栏颜色和状态栏颜色修改
- 抖音一个老人和一个机器人歌曲_抖音一禅小和尚背景音乐汇总 全网最火bgm都在这...
- python爬虫爬取网易云音乐下载_Python爬虫实践-网易云音乐!没有版权又如何!照样爬取!...
- 全套BAT大厂面试题整理锦集
- Rockchip 休眠唤醒 开发指南
- c# 获取进程cpu的使用率 简单试验
热门文章
- Redis数据库,Jedis接口分类(使用)说明
- JAVA:eclipse文本中文支持
- python一个函数调用另一个函数_python下如何在目录下让Python文件去调用另一个文件内的函数或类...
- 清除浮动-:after伪元素法(HTML、CSS)
- 实验3-7 统计学生成绩 (15 分)
- 交换机的VLAN与Trunk配置
- 转 Mac 使用ab性能测试工具
- 【git】git提交忽略不必要的文件或文件夹
- 【职场生活】跳槽离职要注意的那些坑?
- 【汇编语言与计算机系统结构笔记04】80x86计算机组织、保护模式、存储器、寄存器、计算机系统结构金字塔