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. 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.jpg\n" << endl;
  14. }
  15.  
  16. int main(int argc, char** argv)
  17. {
  18. const char* filename = argc >= ? argv[] : "pic1.jpg";
  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, CV_GRAY2BGR);
  31.  
  32. #if 0
  33. vector<Vec2f> lines;
  34. HoughLines(dst, lines, , CV_PI/, , , );
  35.  
  36. for( size_t i = ; i < lines.size(); i++ )
  37. {
  38. float rho = lines[i][], theta = lines[i][];
  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. #else
  49. vector<Vec4i> lines;
  50. HoughLinesP(dst, lines, , CV_PI/, , , );
  51. for( size_t i = ; i < lines.size(); i++ )
  52. {
  53. Vec4i l = lines[i];
  54. line( cdst, Point(l[], l[]), Point(l[], l[]), Scalar(,,), , CV_AA);
  55. }
  56. #endif
  57. imshow("source", src);
  58. imshow("detected lines", cdst);
  59.  
  60. waitKey();
  61.  
  62. return ;
  63. }

OpenCV 霍夫线变换的更多相关文章

  1. 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

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

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

    在本篇文章中,我们将一起学习opencv中霍夫变换相关的知识点,以及了解opencv中实现霍夫变换的HoughLines,HoughLinesP函数的使用方法,实现霍夫圆变换的HoughCircles ...

  3. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

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

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

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

  5. OpenCV中的霍夫线变换和霍夫圆变换

    一.霍夫线变换 霍夫线变换是OpenCv中一种寻找直线的方法,输入图像为边缘二值图. 原理: 一条直线在图像二维空间可由两个变量表示, 例如: 1.在 笛卡尔坐标系: 可由参数: (m,b) 斜率和截 ...

  6. python数字图像处理(15):霍夫线变换

    在图片处理中,霍夫变换主要是用来检测图片中的几何形状,包括直线.圆.椭圆等. 在skimage中,霍夫变换是放在tranform模块内,本篇主要讲解霍夫线变换. 对于平面中的一条直线,在笛卡尔坐标系中 ...

  7. 图像变换 - 霍夫线变换(cvHoughLines2)

    霍夫变换是一种在图像中寻找直线.圆及其他简单形状的方法,霍夫线变换是利用Hough变换在二值图像中找到直线. 利用CV_HOUGH_PROBABILISTIC,对应PPHT(累计概率霍夫变换)?这个算 ...

  8. OpenCV-Python 霍夫线变换 | 三十二

    目标 在这一章当中, 我们将了解霍夫变换的概念. 我们将看到如何使用它来检测图像中的线条. 我们将看到以下函数:cv.HoughLines(),cv.HoughLinesP() 理论 如果可以用数学形 ...

  9. opencv之霍夫曼变换

    霍夫变换不仅可以找出图片中的直线,也可以找出圆,椭圆,三角形等等,只要你能定义出直线方程,圆形的方程等等. 不得不说,现在网上的各种博客质量真的不行,网上一堆文章,乱TM瞎写,误人子弟.本身自己就没有 ...

随机推荐

  1. Codeforces Round #571 (Unrated for Div. 1+Div. 2)

    A 略 B 被删了,被这个假题搞自闭了,显然没做出来. C 开始莽了个NTT,后来发现会TLE,其实是个SB前缀和,对于这题,我无**说. #include<bits/stdc++.h> ...

  2. 深度学习常用的数据源(MNIST,CIFAR,VOC2007系列数据)

    MINIST手写数据集 压缩包版: http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz http://yann.lecun.com/ ...

  3. 编程作业2.1:Logistic regression

    题目 在这部分的练习中,你将建立一个逻辑回归模型来预测一个学生是否能进入大学.假设你是一所大学的行政管理人员,你想根据两门考试的结果,来决定每个申请人是否被录取.你有以前申请人的历史数据,可以将其用作 ...

  4. 1)基本的MFC程序创建过程

    1)基本的MFC创建过程: 2)   选择MFC应用程序: 3)然后选择特定的选项  直接完成就行了: 4)下面就是建成的样子: 5)然后是  运行结果: 6)有一个问题  那个  菜单栏是属于  F ...

  5. 吴裕雄--天生自然 JAVA开发学习:条件语句

    public class Test { public static void main(String args[]){ int x = 10; if( x < 20 ){ System.out. ...

  6. drf三大认证补充

    频率认证 源码分析部分 def check_throttles(self, request): for throttle in self.get_throttles(): if not throttl ...

  7. 简述cookies 和 session

    session HTTP协议本身是无状态的,本身并不能支持服务端保存客户端的状态信息,于是,Web Server中引入了session的概念,用来保存客户端的状态信息. 1)当一个用户向服务器发送第一 ...

  8. linux下nfs共享目录

    1. 关掉防火墙    systemctl disable firewalld.service 2. 关掉selinux    vim /etc/selinux/config    修改第七行:    ...

  9. linux下特殊命令集锦

    1.ifconfig -a | grep enp0 | cut -d : -f 1   //按照:进行切割网络文件名 如:ifconfig `ifconfig -a | grep enp0 | cut ...

  10. 从 0 到 1 到完美,写一个 js 库、node 库、前端组件库

    之前讲了很多关于项目工程化.前端架构.前端构建等方面的技术,这次说说怎么写一个完美的第三方库. 1. 选择合适的规范来写代码 js 模块化的发展大致有这样一个过程 iife => commonj ...