• 【学习opencv第五篇】霍夫线变换


    霍夫变换是一种在图像中寻找直线,圆及其他简单形状的方法。opencv支持两种不同的霍夫变换:标准霍夫变换(SHT)和累积概率霍夫变换(PPHT)。在opencv中可以使用同一个函数来使用两种算法。

    相关函数如下:

    CvSeq* cvHonghLines2(CvArr* image,  void* line_storage,int mehtod, double rho, double theta, int threshold,  double param1 =0, double param2 =0 );
    image   输入 8-比特、单通道 (二值) 图像
    line_storage  存储检测到的线段,可以是序列或者单行/单列矩阵
    mehtod     Hough 变换变量
    rho
        与象素相关单位的距离精度
    theta  弧度测量的角度精度
    threshold  阈值参数。如果相应的累计值大于 threshold, 则函数返回的这个线段
    param1 和param2为与变换方法有关的参数

    #include "StdAfx.h"
    #include<cv.h>
    #include<highgui.h>
    #include<math.h>
    int main()
    {
    	IplImage* sourceImage;
    	sourceImage= cvLoadImage("大中南.jpg",0);
    	IplImage* destImage=cvCreateImage(cvGetSize(sourceImage),8,1);
    	IplImage* colorImage=cvCreateImage(cvGetSize(sourceImage),8,3);
    	//分配空间,默认64KB
    	CvMemStorage* storage=cvCreateMemStorage(0);
    	CvSeq* lines=0;                     //指向所检测到的线的序列的第一条...
    	
    	//首先对源图像进行边缘检测,结果以灰度图显示,
    	cvCanny(sourceImage,destImage,50,200,3);
    	cvCvtColor(destImage,colorImage,CV_GRAY2BGR);
    	
    	lines=cvHoughLines2(//返回一个指向CvSeq序列结构的的指针,
    		destImage,//要进行霍夫检测的图像,必须是8位的,
    		storage,  //保存结果位置的指针,
    		CV_HOUGH_PROBABILISTIC,
    		1,        //这两个参数都是用来设置直线的分辨率的
    		CV_PI/180,
    		80,      //一个阈值
    		30,
    		10     //表示支持所返回的直线的点的数量
    		);
    	int index;     //index为直线的索引
    	for(index=0;index<lines->total;index++)    //遍历每一条线
    	{
    		CvPoint* line=(CvPoint*)cvGetSeqElem(lines,index);
    		cvLine(colorImage,line[0],line[1],CV_RGB(255,0,0),3,8);
    	}
    
    	cvNamedWindow("SOURCEIMAGE",1);
    	cvShowImage("SOURCEIMAGE",sourceImage);
    	
    	cvNamedWindow("COLORIMAGE",1);
    	cvShowImage("COLORIMAGE",colorImage);
    	
    	cvNamedWindow("HOUGH",1);
    	cvShowImage("HOUGH",colorImage);
    	cvWaitKey(0);
    	return 0;
    }
    运行结果:


    Reference《学习opencv》

  • 相关阅读:
    各项硬件使用剖析(一)---让你一眼就能区分瓶颈是Memory、processor ORdisk!
    基本算术运算符
    网页计算器 && 简易网页时钟 && 倒计时时钟
    页面加载后累加,自加1&&判断数字是否为两位数
    累加按钮,自加1&&输入两个数字,比较大小
    用typeof查看数据类型&&用parseInt解析数字,并求和
    鼠标移过,改变图片路径
    单一按钮显示/隐藏&&提示框效果
    简易选项卡&&简易JS年历
    函数传参,改变Div任意属性的值&&图片列表:鼠标移入/移出改变图片透明度
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3131220.html
Copyright © 2020-2023  润新知