对自己的项目有一个简单的想法,想先用OpenCV检测出图片中的圆,并找到圆心与半径。以前从别人的博客学习了很多,现在也把我的一个简单代码贴在下面,并注释。希望能给各位有一点点帮助。
int main(int argc, char** argv)
{const char* filename = "4-2.jpg";Mat img = imread(filename);if (img.empty()){cout << "can not open " << filename << endl;return -1;}Mat img3,img2,img4;//cvtColor(img, cimg, COLOR_GRAY2BGR);cvtColor(img, img2, COLOR_BGR2GRAY);   //把彩色图转换为黑白图像GaussianBlur(img2, img2, Size(9, 9), 2, 2);threshold(img2, img3, 90, 255, THRESH_BINARY);  //图像二值化,,注意阈值变化namedWindow("detecte circles", CV_NORMAL);imshow("detecte circles", img3);Canny(img3, img3, 50, 100);//边缘检测namedWindow("detect circles", CV_NORMAL);imshow("detect circles", img3);vector<vector<Point>>contours;vector<Vec4i>hierarchy;findContours(img3, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);//查找出所有的圆边界int index = 0;for (; index >= 0; index = hierarchy[index][0]){Scalar color(rand() & 255, rand() & 255, rand() & 255);drawContours(img, contours, index, color, CV_FILLED, 8, hierarchy);}namedWindow("detected circles", CV_NORMAL);imshow("detected circles", img);//标准圆在图片上一般是椭圆,所以采用OpenCV中拟合椭圆的方法求解中心Mat pointsf;Mat(contours[0]).convertTo(pointsf, CV_32F);RotatedRect box = fitEllipse(pointsf);cout << box.center;waitKey();return 0;}

这里求圆心与半径的方法采用的是OpenCV中拟合椭圆的方法求解中心。
第一次写博客,方法也很简单,希望能给大家帮助。

OpenCV检测圆并求出圆心与半径相关推荐

  1. python定义一个圆类_python设计一个Circle(圆)类,包括圆心位置`,半径,颜色等属性。编写构造方法和其他方法,计算周长和面积。...

    ** Python:设计一个Circle(圆)类,包括圆心位置`,半径,颜色等属性.编写构造方法和其他方法,计算周长和面积.请编写程序验证类的功能. class Circle: def -init-( ...

  2. python设计一个Circle(圆)类,包括圆心位置`,半径,颜色等属性。编写构造方法和其他方法,计算周长和面积。

    ** Python:设计一个Circle(圆)类,包括圆心位置`,半径,颜色等属性.编写构造方法和其他方法,计算周长和面积.请编写程序验证类的功能. class Circle: def -init-( ...

  3. lisp取两直线交点画圆_求过圆心直线与圆的两个交点

    主要是注意所使用的数据类型. 之前用的是float,出现了一些意外,而且花费了我不少时间来反复验证.推导, 做了很多的无用功,而且,反复推导得出来的计算步骤并没有什么不牢靠的地方. 然后计算得到的结果 ...

  4. 由三个点的坐标确定圆和球的圆心和半径

    利用三个平面或者空间的点位坐标可以求出该平面圆或者球的圆心或者球心和半径 import numpy as np from numpy.linalg import det # 由圆上三点确定圆心和半径# ...

  5. 使用halcon将一个圆上的点拟合成圆形并且求出圆心

    我们在自动化贴装机标定过程中,需要计算吸头的旋转中心位置.我们一般使用的方法是使用模板匹配,做一个模板,吸头旋转一个角度寻找模板一次,通过多次旋转求取吸头的旋转中心. 使用halcon实现 publi ...

  6. 圆上三点求圆心和半径

    下面的程序实现用到C++和OpenCV. 先定义一个用于存储圆的数据的结构体CircleData: struct CircleData {Point2f center;int radius; }; 假 ...

  7. 三点确定圆心和半径(模版)

    struct Point2f{double x,y; }; struct CircleData {Point2f center;double radius; }; //方法一:通过其中两点的中垂线交点 ...

  8. 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)

    本文目标是通过使用SIFT和RANSAC算法,完成特征点的正确匹配,并求出变换矩阵,通过变换矩阵计算出要识别物体的边界(文章中有部分源码,整个工程我也上传了,请点击这里). SIFT算法是目前公认的效 ...

  9. 利用Python OpenCV进行圆孔检测、计算半径、圆心到四边距离

    先上最终检测视频: OpenCV实时检测圆孔 本文重在实操,就不赘述背景意义等内容. 给定问题:假如有一个配件,此时需要检测配件上的圆孔坐标.半径.个数.圆孔到配件四边的距离. 由于没有实物,就在纸上 ...

最新文章

  1. php设置backlog,高并发调优backlog多大合适?
  2. jquery--call()amp;apply()函数
  3. 数据库分库分表解决方案汇总
  4. Android屏幕尺寸适配注意事项
  5. 22021年江苏高考成绩查询,江苏高考成绩查询系统入口
  6. git和python交互_使用Python连接和执行GIT命令
  7. 利用C#开发基于snmpsharpnet基础的SNMP开发应用
  8. Mirror--自增键在镜像中的影响
  9. windows10 安装 rancher desktop及测试案例
  10. matlab设计高频滤波器
  11. 夜曲歌词 拼音_周杰伦夜曲歌词
  12. CSV文件使用Excel打开
  13. 设置gvim中横竖光标_VIM配置高亮光标所在行和所在列
  14. math.abs() java_Java中使用Math.abs你入坑了?
  15. (可)变磁阻式传感器和磁阻式传感器的区别——原理、特点和应用
  16. Android 悬浮窗、悬浮球开发
  17. linux的sssd服务,系统安全服务守护进程SSSD
  18. qt qml 界面程序 适配4K屏幕 简单方法
  19. html5新增属性cookies,关于cookie的SameSite属性
  20. arcgis把jpg转成栅格图像_在ArcGIS中配准(TIF、JPEG)栅格图像并矢量化

热门文章

  1. QDateTimeEdit 日历添加右侧按钮图标
  2. imazingAPP怎么安装到苹果上面?
  3. php手机网站支付宝_php支付宝手机网页支付类实例
  4. 支付宝手机网页支付之golang版
  5. 计算机顶级会议的历年最佳文章 (1996-2013)
  6. 【JZOJ4793】【GDOI2017模拟9.21】妮厨的愤怒
  7. 2022年资料员-通用基础(资料员)考试题及答案
  8. 【从零开始学习光流算法(0)】——基本假设及Lucas-Kanade(LK)光流法
  9. [SSD安装3] 联想笔记本如何安装固态硬盘(全流程+装系统)
  10. 如果理解本征vlan,即native vlan