关于houghlines函数角度问题的说明

以上是opecv reference里面的说明。

Image必须是8位单通道图(可以使灰度图、二值图、边缘图等)

Rho:距离分辨率,一般为1

Theta:角度分辨率,一般为CV_PI/180

Threshold:阈值,只返回像素和大于threshold的直线

Srn:(猜测)距离缩放

Stn:(猜测)角度缩放

重点说明

Lines:

—p: 直线到原点(左上角)的距离

:角度

这里的角度文档上有写是vertical line~0°,horizontal line~90°但是它没说方向是顺时针啊!

这导致我不知道下面这个角度到底是怎么计算的

An example using the Hough line detector can be found at opencv_source_code/samples/cpp/houghlines.cpp

大家可以再画图里画两条直线验证

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>

using namespace cv;
using namespace std;

static void help()
{
    cout << "\nThis program demonstrates line finding with the Hough transform.\n"
        "Usage:\n"
        "./houghlines <image_name>, Default is pic1.png\n" << endl;
}

int main(int argc, char** argv)
{
    const char* filename = argc >= 2 ? argv[1] : "d:/vs/cardPic/w.png";

    Mat src = imread(filename, 0);
    if(src.empty())
    {
        help();
        cout << "can not open " << filename << endl;
        return -1;
    }

    Mat dst, cdst;
    Canny(src, dst, 50, 200, 3);
    cvtColor(dst, cdst, COLOR_GRAY2BGR);

    vector<Vec2f> lines;
    HoughLines(dst, lines, 1, CV_PI/180, 80, 0, 0 );

    for( size_t i = 0; i < lines.size(); i++ )
    {
        float rho = lines[i][0], theta = lines[i][1];
        cout<<i<<":"<<theta*180/CV_PI<<endl;
        Point pt1, pt2;
        double a = cos(theta), b = sin(theta);
        double x0 = a*rho, y0 = b*rho;
        pt1.x = cvRound(x0 + 1000*(-b));
        pt1.y = cvRound(y0 + 1000*(a));
        pt2.x = cvRound(x0 - 1000*(-b));
        pt2.y = cvRound(y0 - 1000*(a));
        line( cdst, pt1, pt2, Scalar(0,0,255), 1, CV_AA);
    }

    imshow("source", src);
    imshow("detected lines", cdst);

    waitKey();

    return 0;
}
时间: 2024-10-10 15:42:33

关于houghlines函数角度问题的说明的相关文章

opencv —— HoughLines、HoughLinesP 霍夫线变换(标准霍夫线变换、多尺度霍夫线变换、累积概率霍夫线变换)

霍夫线变换的原理 一条直线在图像二维空间可由两个变量表示,有以下两种情况: ① 在笛卡尔坐标系中:可由参数斜率和截距(k,b)表示. ② 在极坐标系中:可由参数极经和极角(r,θ)表示. 对于霍夫线变换,我们将采用第二种方式极坐标系来表示直线,因此直线的表达式可为: 化简便可得到: 对于(x0,y0),我们可以将通过这一点的所有直线统一定义为: 这就意味着每一对  代表一条通过点  的直线. 对于一个给定点   ,我们可以在直角坐标系中,绘出所有通过它的直线(θ 为 x 轴,r 为 y 轴).最

WordPress时间日期函数常用代码

在修改的过程中,我们难免会用到时间函数,这当然就涉及到了WordPress 的时间格式.那么我们只要对时间函数: the_time() 做一些对应的修改,就能达到我们想的效果,首先我得要知道那些参数对应的含义,这样用起来才会得心应手.先来看下面这个表格: 参数 参数描述 输出时间格式 d 日期 06 j 日期 6 D 星期 一 F 月份 一月 g 小时 6 G 小时 06 h 分钟 6 H 分钟 06 a 上下午 am/pm A 上下午 AM/PM l 星期 星期一 m 月份 01 M 月份 J

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

学习 opencv---(13)opencv霍夫变换:霍夫线变换,霍夫圆变换

在本篇文章中,我们将一起学习opencv中霍夫变换相关的知识点,以及了解opencv中实现霍夫变换的HoughLines,HoughLinesP函数的使用方法,实现霍夫圆变换的HoughCircles函数的使用方法. 先尝鲜一下其中一个示例程序的运行截图: 一.引言 在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确的检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中从图像识别几何形状的基

霍夫变换(一)霍夫线性变换

霍夫变换(一)线性霍夫变换 概述:霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果.霍夫线变换和霍夫圆变换两种. 霍夫线变换: OpenCv中的霍夫线变换: <1>标准霍夫变换(StandardHough Transform,SHT),由HoughLines函数调用. <2>多尺度霍夫变换(Multi-ScaleHough Transform,MSHT),由Hou

霍夫变换Hough

http://blog.csdn.net/sudohello/article/details/51335237 霍夫变换Hough 霍夫变换(Hough)是一个非常重要的检测间断点边界形状的方法.它通过将图像坐标空间变换到参数空间,来实现直线与曲线的拟合. 1.直线检测 1.1 直线坐标参数空间 在图像x?y坐标空间中,经过点(xi,yi)的直线表示为: yi=axi+b(1) 其中,参数a为斜率,b为截矩. 通过点(xi,yi)的直线有无数条,且对应于不同的a和b值. 如果将xi和yi视为常数

Opencv图像识别从零到精通(22)-----hough变换检测直线与圆

今天要看的是霍夫变换,常用用来检测直线和圆,这里是把常见的笛卡尔坐标系转换成极坐标下,进行累计峰值的极大值,确定.HoughLines,HoughLinesP,HoughCircles,三个函数,首先先看看原理,最后会用漂亮的matlab图,来回归一下,霍夫直线变换. 霍夫线变换: 众所周知, 一条直线在图像二维空间可由两个变量表示. 例如: 在 笛卡尔坐标系: 可由参数:  斜率和截距表示. 在 极坐标系: 可由参数:  极径和极角表示 对于霍夫变换, 我们将用 极坐标系 来表示直线. 因此,

OpenCV2学习笔记(八):使用霍夫变换检测直线和圆

在研究一幅图像时,常常会遇到一些平面或线性问题,直线在图像中频繁可见.这些富有意义的特征在物体识别等图像处理过程中扮演着重要的角色.本节主要记录一种经典的检测直线算法--霍夫变换(Hough Transform),用Hough变换检测图像中的直线和圆,开发平台为Qt5.3.2+OpenCV2.4.9. 一:Hough变换检测图像的直线 1.基础Hough变换 在霍夫变换中,直线用以下方程表示: 其中,参数表示一条直线到图像原点(左上角)的距离, 表示与直线垂直的角度.如下图所示,直线1的垂直线的

【OpenCV新手教程第14】OpenCVHough变换:霍夫变换线,霍夫变换圆汇编

本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本号: 2.4.9 本篇文章中.我们一起探讨了OpenCV