x

 #include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h> using namespace cv;
using namespace std; int main(int argc, char** argv)
{
Mat src, src_gray, dst;
src = imread("test1.jpg"); char INPUT_TITLE[] = "input image"; imshow(INPUT_TITLE, src); Canny(src, src_gray, , );
cvtColor(src_gray, dst, CV_GRAY2BGR);
imshow("edge image", src_gray);
imshow("gray", dst); //方法1(标准霍夫变换)
//vector<Vec2f> lines;
//HoughLines(src_gray, lines, 1, CV_PI / 180, 150, 0, 0);
//for (size_t i = 0; i < lines.size(); i++) {
// float rho = lines[i][0]; // 极坐标中的r长度
// float theta = lines[i][1]; // 极坐标中的角度
// Point pt1, pt2;
// double a = cos(theta), b = sin(theta);
// double x0 = a * rho, y0 = b * rho;
// // 转换为平面坐标的四个点
// pt1.x = cvRound(x0 + 1000 * (-b));//对一个double型的数进行四舍五入,并返回一个整型数!
// pt1.y = cvRound(y0 + 1000 * (a));
// pt2.x = cvRound(x0 - 1000 * (-b));
// pt2.y = cvRound(y0 - 1000 * (a));
// line(dst, pt1, pt2, Scalar(0, 0, 255), 1, CV_AA);
//} //第二种方法(概率霍夫变换)
vector<Vec4f> plines;
HoughLinesP(src_gray, plines, , CV_PI / 180.0, , , );
Scalar color = Scalar(, , );
for (size_t i = ; i < plines.size(); i++) {
Vec4f hline = plines[i];
line(dst, Point(hline[], hline[]), Point(hline[], hline[]), color, , LINE_AA);
} imshow("效果图",dst); waitKey();
return ; }

 #include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h> using namespace cv;
using namespace std; int main(int argc, char** argv)
{
Mat src, src_gray;
src = imread("3 input.bmp"); char INPUT_TITLE[] = "input image"; imshow(INPUT_TITLE, src);   //转成灰度图
cvtColor(src, src_gray, COLOR_BGR2GRAY);
 
GaussianBlur(src_gray, src_gray, Size(, ), , ); //进行霍夫圆变换
vector<Vec3f> circles;
HoughCircles(src_gray, circles, HOUGH_GRADIENT, 1.5, , , , , ); for (size_t i = ; i < circles.size(); i++)
{
Point center(cvRound(circles[i][]), cvRound(circles[i][]));
int radius = cvRound(circles[i][]);
     
       //绘制圆心
circle(src, center, , Scalar(, , ), -, , );
       //绘制圆的轮廓
circle(src, center, radius, Scalar(, , ), , , ); } imshow("效果图", src); waitKey();
return ; }

霍夫圆检测一般只会找出最大的一个圆

OpenCV——霍夫变换(直线检测、圆检测)的更多相关文章

  1. OpenCV 学习笔记03 直线和圆检测

    检测边缘和轮廓不仅重要,还经常用到,它们也是构成其他复杂操作的基础. 直线和形状检测与边缘和轮廓检测有密切的关系. 霍夫hough 变换是直线和形状检测背后的理论基础.霍夫变化是基于极坐标和向量开展的 ...

  2. 【python+opencv】直线检测+圆检测

     Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...

  3. opencv::霍夫变换-直线

    霍夫直线变换介绍 Hough Line Transform用来做直线检测 前提条件 – 边缘检测已经完成 平面空间到极坐标空间转换 对于任意一条直线上的所有点来说,变换到极坐标中,从[0~360]空间 ...

  4. opencv:霍夫圆检测

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  5. opencv python:直线检测 与 圆检测

    霍夫直线变换介绍 霍夫圆检测 现实中: example import cv2 as cv import numpy as np # 关于霍夫变换的相关知识可以看看这个博客:https://blog.c ...

  6. opencv学习笔记霍夫变换——直线检测

    参考大佬博文:blog.csdn.net/jia20003/article/details/7724530 lps-683.iteye.com/blog/2254368 openCV里有两个函数(比较 ...

  7. 【CImg】霍夫变换——直线检测

    霍夫变换——直线检测 考古debug,其实很久之前就解决的bug......一直忘记过来改文章....欸 =============================原文================ ...

  8. hough变换检测直线和圆

    图像测量和机器视觉作业: 提取图像中的直线和点的位置坐标,将其按一定顺序编码存入一文本文件,并在原图像上叠加显示出来. 下午实验了一下: 程序环境:vs2013(活动平台为x64)+opencv3.1 ...

  9. hough变换是如何检测出直线和圆的?

    (I)直线篇 1 直线是如何表示的?对于平面中的一条直线,在笛卡尔坐标系中,常见的有点斜式,两点式两种表示方法.然而在hough变换中,考虑的是另外一种表示方式:使用(r,theta)来表示一条直线. ...

随机推荐

  1. 最小公倍数(BNUOJ30195)

    最小公倍数 Time Limit: 0 ms Case Time Limit: 0 ms Memory Limit: 0 KBSubmit: 17 Accepted: 1 This problem w ...

  2. 前端SEO

    一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时,然后得到结果.深究其背后的故事,搜索引擎做了很多事情. 在搜索引擎网站,比如百度,在其后台有一个非常庞大的数据库,里面存储了海量的关 ...

  3. python学习之老男孩python全栈第九期_day002知识点总结

    1. 格式化输出: (1) %(占位符) s(str字符串) d(digit数字) (2) 想单纯输入%,需要输入两个%(%和占位符冲突),前面的%相当于转义. 2. while else循环: (1 ...

  4. 在微信小程序中引入 Iconfont 阿里巴巴图标库

    小程序的代码包不能超过4M,为了压缩代码包的大小,可以通过第三方链接引入图标资源 Iconfont 无疑是最常用的第三方图标库,这里介绍一下在微信小程序引入 Iconfont 的方法 一.下载图标 首 ...

  5. iOS设备上出现的click,live,on点击失去效果

    iOS设备上出现的点击事件失效,但是在Android上可以正常使用, 1.iOS设备对标签点击限制,不认为是可点击的标签,需要给要绑定点击事件的标签加上一个样式,cursor:pointer:这样就可 ...

  6. MariaDB MariaDB、MySQL存储过程、游标基础应用举例说明

    MariaDB.MySQL存储过程.游标基础应用举例说明 by:授客 QQ:1033553122 测试环境: MariaDB-10.0.19-centos7-x86_64 实践操作: # 创建测试数据 ...

  7. KeyPress 和KeyDown 、KeUp之间的区别

    前几天,在写完一个功能模块上线测试的时候,出现了一个诡异的问题.input 框在输入查询内容之后,按回车键居然有两种不同的表现形式(input 框没有绑定键盘事件),谷歌和火狐功能正常,但IE在按了回 ...

  8. eclipse代码中每行的开始和结尾出现多余的特殊符号

    window -> preferences -> general -> editors -> text editors ->          show whitespa ...

  9. linux设置永久环境变量

    vi /etc/profile 文件最后输入export PATH=$PATH:/usr/abc/def/ 保存 输入source /etc/profile刷新刚刚修改过的环境变量文件

  10. 如何将SQL Server 2000备份的数据库文件还原(升级)为SQL Server 2005或更高版本的数据库?

    其实很简单,有两种方法. 方法一:将SQL Sever 2000数据库备份的数据库文件名后面加上“.bak”,然后直接在SQL Sever 2005或者高版本软件里面直接还原即可: 方法二:在SQL ...