以上是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

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

比如下图片的角度是 90°,90°,91°(分别是三个不同粗细的线),从其最近的那个坐标起点开始,顺时针旋转到待测直线的位置,旋转的角度就是直线的角度

  1. #include "opencv2/highgui/highgui.hpp"
  2. #include "opencv2/imgproc/imgproc.hpp"
  3.  
  4. #include <iostream>
  5.  
  6. using namespace cv;
  7. using namespace std;
  8.  
  9. static void help()
  10. {
  11. cout << "\nThis program demonstrates line finding with the Hough transform.\n"
  12. "Usage:\n"
  13. "./houghlines <image_name>, Default is pic1.png\n" << endl;
  14. }
  15.  
  16. int main(int argc, char** argv)
  17. {
  18. const char* filename = argc >= ? argv[] : "d:/vs/cardPic/w.png";
  19.  
  20. Mat src = imread(filename, );
  21. if(src.empty())
  22. {
  23. help();
  24. cout << "can not open " << filename << endl;
  25. return -;
  26. }
  27.  
  28. Mat dst, cdst;
  29. Canny(src, dst, , , );
  30. cvtColor(dst, cdst, COLOR_GRAY2BGR);
  31.  
  32. vector<Vec2f> lines;
  33. HoughLines(dst, lines, , CV_PI/, , , );
  34.  
  35. for( size_t i = ; i < lines.size(); i++ )
  36. {
  37. float rho = lines[i][], theta = lines[i][];
  38. cout<<i<<":"<<theta*/CV_PI<<endl;
  39. Point pt1, pt2;
  40. double a = cos(theta), b = sin(theta);
  41. double x0 = a*rho, y0 = b*rho;
  42. pt1.x = cvRound(x0 + *(-b));
  43. pt1.y = cvRound(y0 + *(a));
  44. pt2.x = cvRound(x0 - *(-b));
  45. pt2.y = cvRound(y0 - *(a));
  46. line( cdst, pt1, pt2, Scalar(,,), , CV_AA);
  47. }
  48.  
  49. imshow("source", src);
  50. imshow("detected lines", cdst);
  51.  
  52. waitKey();
  53.  
  54. return ;
  55. }

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

  1. PHP代码实现3 [函数角度]

    内部函数 标准函数的实现存放在ext/standard扩展目录中. php函数种类 Zend engine中的function的存在形式 123456 struct _zend_execute_dat ...

  2. OpenCV-Python 霍夫直线检测-HoughLinesP函数参数

    cv2.HoughLines()函数是在二值图像中查找直线,cv2.HoughLinesP()函数可以查找直线段. cv2.HoughLinesP()函数原型: HoughLinesP(image, ...

  3. opencv —— HoughLines、HoughLinesP 霍夫线变换原理(标准霍夫线变换、多尺度霍夫线变换、累积概率霍夫线变换)及直线检测

    霍夫线变换的原理 一条直线在图像二维空间可由两个变量表示,有以下两种情况: ① 在笛卡尔坐标系中:可由参数斜率和截距(k,b)表示. ② 在极坐标系中:可由参数极经和极角(r,θ)表示. 对于霍夫线变 ...

  4. python入门之函数

    为什么要用函数 python的函数是由一个新的语句编写,即def ,def是可执行的语句--函数并不存在,知道python运行了def后才存在. 函数是通过赋值函数传递的,参数通过赋值传递给函数. d ...

  5. C++ Opencv HoughLines()用霍夫变换在二元图像中寻线

    一.霍夫变换简介 参考http://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm 二.HoughLines()函数详解 该函数接受的输入矩阵只能是8位单通道的二 ...

  6. [学习] 从 函数式编程 到 lambda演算 到 函数的本质 到 组合子逻辑

    函数式编程 阮一峰 <函数式编程初探>,阮一峰是<黑客与画家>的译者. wiki <函数编程语言> 一本好书,<计算机程序的构造与解释>有讲到schem ...

  7. GO汇编-函数

    GO汇编-函数 终于到函数了!因为Go汇编语言中,可以也建议通过Go语言来定义全局变量,那么剩下的也就是函数了.只有掌握了汇编函数的基本用法,才能真正算是Go汇编语言入门.本章将简单讨论Go汇编中函数 ...

  8. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

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

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

随机推荐

  1. 分治与递归-找k个临近中位数的数

    问题描述:给定由n个互不相同的数组成的集合S以及正整数k≤n,试设计一个O(n)时间算法找出S中最接近S的中位数的k个数. 算法描述: 用线性时间选择实现的算法找到中位数 S’=除去中位数外的S S& ...

  2. java 用户修改密码

    import java.util.Scanner; class Member { private String mima; private String name; public String get ...

  3. Java基础——注解

    一.概述 引自百度百科: 定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法. ...

  4. Java:多线程中的volatile

    一.为什么使用volatile 首先,通过一段简单的代码来理解为什么要使用volatile: public class RunThread extends Thread{ private boolea ...

  5. 四、新时间日期API

    一.使用 LocalDate .LocalTime .LocalDateTime LocalDate.LocalTime.LocalDateTime 类的实例是不可变的对象,分别表示使用 ISO-86 ...

  6. C++0x,std::move和std::forward解析

    1.std::move 1.1std::move是如何定义的 template<typename _Tp> constexpr typename std::remove_reference ...

  7. sqlalchemy 转json 的几种常用方式

    sqlalchemy 转json 的几种常用方式 # -*- coding:utf-8 -*- import datetime from flask import Flask, json, jsoni ...

  8. JAVA基础学习之路(十)this关键字

    class Book { String name; int price; int num;//构造方法之间的互相调用解决了代码的重复问题,但是一定要留出口 public Book() { ,); } ...

  9. Linux的基础预备知识

       Linux下一切皆文件 1.root@mk-virtual-machine:/home/mk#   root:该位置表示当前终端登录的用户名 mk-virtual-machine:/home/m ...

  10. linux NULL 的定义

    #undef NULL #if defined(__cplusplus) #define NULL 0 #else #define NULL ((void *)0) #endif