HoughLine变换
对于HoughLine变换,有两种方法,标准霍夫变换(SHT)用的矩阵是CV_32FC2,用极坐标法记录直线,而累积概率霍夫变换(PPHT)用的是CV_32FC
核心函数:
cvCvtColor,cvHoughLines2,cvGetSeqElem
程序:
代码:
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
int HoughLines(int argc,char** argv)
{
IplImage* src=cvLoadImage("e:\\picture\\8.JPG",0);
IplImage* canny=cvCreateImage(cvGetSize(src),8,1);
IplImage* result=cvCreateImage(cvGetSize(src),8,3);
IplImage* result2=cvCreateImage(cvGetSize(src),8,3);
CvSeq* line=0;
CvMemStorage* storage = cvCreateMemStorage(0);
cvCanny(src,canny,50,125); //找线段的图像必须先用cvCanny寻找轮廓
//查找直线
line=cvHoughLines2(canny,storage,CV_HOUGH_PROBABILISTIC,1, CV_PI/180, 80, 30, 10 );
cvCvtColor(canny,result,CV_GRAY2BGR); //黑白转换为彩色
cvCopy(result,result2);
for(int i=0;i<line->total;i++)
{
CvPoint *pt=(CvPoint*)cvGetSeqElem(line,i); //提取结果坐标
cvLine(result,pt[0],pt[1],cvScalar(0,0,255),3,8);
}
//查找圆
cvClearMemStorage(storage);
CvMemStorage* storage2 = cvCreateMemStorage(0);
cvSmooth(src,src,CV_GAUSSIAN,5,5);
line=cvHoughCircles(src,storage2,CV_HOUGH_GRADIENT,2,10);
for(int i=0;i<line->total;i++)
{
std::cout<<"circle"<<std::endl;
float *p=(float*)cvGetSeqElem(line,i); //提取结果坐标
CvPoint pt=cvPoint(cvRound(p[0]),cvRound(p[1])); //p[0]和p[1]是圆心的x和y坐标,不过要四舍五入取整:cvRound
cvCircle(result2,pt,cvRound(p[2]),cvScalar(0,0,255),3,20);
}
cvNamedWindow("src");
cvNamedWindow("canny");
cvNamedWindow("result");
cvNamedWindow("result2");
cvShowImage("src",src);
cvShowImage("canny",canny);
cvShowImage("result",result);
cvShowImage("result2",result2);
cvWaitKey(0);
cvDestroyWindow("src");
cvDestroyWindow("canny");
cvDestroyWindow("result");
cvDestroyWindow("result2");
cvReleaseImage(&src);
cvReleaseImage(&canny);
cvReleaseImage(&result);
cvReleaseImage(&result2);
return 0;
}
转载于:https://blog.51cto.com/flyclc/1539825
HoughLine变换相关推荐
- OpenCV3学习(6.2)——霍夫(Hough)变换:霍夫线变换HoughLine,霍夫圆变换HoughCircles
霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).最基本的霍夫变换是从黑白图像中检测直线(线段) ...
- OpenCV2马拉松第22圈——Hough变换直线检測原理与实现
计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27220445 收入囊中 Hough变换 概率Ho ...
- 【机器视觉学习笔记】Hough变换直线检测(C++)
目录 源码 效果 平台:Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文源码摘自OpenCV2马拉松第22圈--Hough变换直线检测原理与实现 源 ...
- Hough变换直线检测
作者:云外阳光 链接:https://www.zhihu.com/question/35268803/answer/82100453 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- opencv HoughLine 理解
参考: opencv HoughLine Transform Tutorial https://guiqing.blog.csdn.net/article/details/8058336 https: ...
- Hough变换非常详细讲解
Hough变换 y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜率为无穷大).所以实际应用中,利用极坐标的方式,将直线方程表示成:ρ=xcosθ+ysinθ ,其中p表示直角 ...
- NVIDIA GPU的快速傅立叶变换
NVIDIA GPU的快速傅立叶变换 cuFFT库提供GPU加速的FFT实现,其执行速度比仅CPU的替代方案快10倍.cuFFT用于构建跨学科的商业和研究应用程序,例如深度学习,计算机视觉,计算物理, ...
- pytorch空间变换网络
pytorch空间变换网络 本文将学习如何使用称为空间变换器网络的视觉注意机制来扩充网络.可以在DeepMind paper 有关空间变换器网络的内容. 空间变换器网络是对任何空间变换的差异化关注的概 ...
- Python:matplotlib实践:直方图、散点图展示、变色、线条变换、点样式变换、添加名称、设置横纵轴范围、在一张图上显示多条线
直方图: ''' 来源:天善智能韦玮老师课堂笔记 作者:Dust ''' # 折线图.散点图 import matplotlib.pylab as pyl import numpy as npy x= ...
最新文章
- ReadFile 和 补充CreateFile
- 普及一下equals和==的区别的误区
- 中科院信工所经验_2020计算机保研经验贴!(北航、北邮、中科院)
- 游戏服务器正式发布时动态库处理的两种策略
- 视频光端机音频出现噪音是为何?
- PHP数据layui表格,基于layui和thinkphp数据表格的数据接口,layui表格局部刷新
- Android ActivityManager
- Hard samples mining
- linux环境变量lang=c,设置linux环境变量LANG
- [转载]Delta Lake、Iceberg 和 Hudi 三大开源数据湖不知道如何选?那是因为你没看这篇文章
- YOLOv5(Windows)使用教程
- 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】
- ASP.NET的优点
- win10+keras+yolo4训练自己的数据集
- Git远程仓库配置SSH(以github为例)
- 高阶多项式合并同类项程序c语言,多项式合并同类项问题
- Airsim动态 | 带你了解Airsim结构框架
- ElementUI介绍
- io静态功耗_如何使用Fast.io从Google云端硬盘直接在3分钟内免费部署静态网站
- 手把手教你开发属于自己的代码生成器
热门文章
- python求定积分的函数_手搓计算化学(GTO积分by python)
- android 6.0 数据库权限,Android超清晰6.0权限申请AndPermission
- 求java简单计算器源代码_java简单计算器源代码
- java web 集成dom4j_[JavaWeb基础] 031.dom4j写入xml的方法
- python多线程爬取多个网页_python多线程爬取网页
- 万丰科技机器人排名_机器人系统集成“7宗最”
- 二维分类教案_幼儿园中班数学教案中班数学教案二维排序——师乐汇幼儿教师教育网...
- sony电视播放服务器文件,sony电视怎么样 sony电视支持视频格式【图文详解】
- centos6.3 nginx php,CentOS 6.3下nginx、php-fpm、drupal快速部署
- 腾讯位置服务:有何优势?如何使用平台创建应用和服务调用的 Key?