利用opencv进行图像处理,提取椭圆圆心处理

写这个是因为项目正好在做这个,所以简单写写提取椭圆圆心坐标的代码,用的软件是VS。
首先介绍一下步骤,直接从图像处理开始
1,二值化处理(threhold())
2,高斯滤波(GaussianBlur())
3,轮廓提取(canny算子)
4,寻找闭合轮廓(findContours())

上面介绍的是提取椭圆轮廓过程,下面介绍的是过滤干扰图像的过程,分三步,不过,这三部也不都是必须的,看个人需求:
1,像素点数量过滤(size)
2,面积过滤
3,长宽比过滤
代码如下,比较简单,就不过多介绍了,欢迎留言:

#include<iostream>
#include"opencv.hpp"using namespace std;
using namespace cv;void drawCross(Mat &img, Point2f point, Scalar color, int size, int thickness /*= 1*/)
{//绘制横线  line(img, cvPoint(point.x - size / 2, point.y), cvPoint(point.x + size / 2, point.y), color, thickness, 8, 0);//绘制竖线      line(img, cvPoint(point.x, point.y - size / 2), cvPoint(point.x, point.y + size / 2), color, thickness, 8, 0);return;
}//提取单幅图像的特征点
void FeaturePoint(Mat &img)
{Point2f center; //定义变量vector<Point2f> ellipsecenterleft;Mat edges;threshold(img, img, 80, 255, CV_THRESH_BINARY_INV);//imshow("threshold", img);此函数等待按键,按键盘任意键就返回//waitKey(0);GaussianBlur(img, edges, Size(5, 5), 0, 0);//imshow("GaussianBlur", edges);此函数等待按键,按键盘任意键就返回//waitKey(0);Canny(edges, edges, 40, 120, 3);//imshow("Canny", edges);此函数等待按键,按键盘任意键就返回//waitKey(0);vector<vector<Point> > contours;// 创建容器,存储轮廓vector<Vec4i> hierarchy;// 寻找轮廓所需参数findContours(edges, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);//cout << "conours size in "<<serialNumber <<" :" << contours.size() << endl;//if (contours.size() == 1)for (int i = 0; i < contours.size();i++) {RotatedRect m_ellipsetemp;  // fitEllipse返回值的数据类型if (contours[i].size() <= 200){continue;}if (contourArea(contours[i]) < 100 && contourArea(contours[i]) > 1000){continue;}m_ellipsetemp = fitEllipse(contours[i]);  //找到的第一个轮廓,放置到m_ellipsetempellipse(img, m_ellipsetemp, cv::Scalar(255,0,0));   //在图像中绘制椭圆if (m_ellipsetemp.size.width / m_ellipsetemp.size.height <0.3){continue;}center = m_ellipsetemp.center;//读取椭圆中心drawCross(img, center, Scalar(255,0,0), 30, 2);cout << center.x << ends << center.y << endl;}/*imshow("image", img);waitKey(0);*///return center;//返回椭圆中心坐标}int main(int argc, char* argv[])
{const char* imagename = "pixmap1.png";//从文件中读入图像Mat img = imread(imagename, 1);//如果读入图像失败if (img.empty()){fprintf(stderr, "Can not load image %s\n", imagename);return -1;}FeaturePoint(img);//显示图像imshow("image", img);//此函数等待按键,按键盘任意键就返回waitKey();return 0;
}

利用opencv进行图像处理,提取椭圆圆心处理相关推荐

  1. 利用OpenCV从图片中提取矩形并标注坐标(室内平面地图)——(一)

    某城市会展中心室内地图 背景 一名室内设计师的日常工作从设计一张会展地图开始.常常有这样的场景:划分除规范的展位后,进入销售阶段,频繁的需要修改这张地图,如展示拆分.合并.换位置.标记已交易. 问题 ...

  2. opencv获取图片像素坐标_利用OpenCV从图片中提取矩形并标注坐标(室内平面地图)(一)

    ​某城市会展中心室内地图 背景 一名室内设计师的日常工作从设计一张会展地图开始.常常有这样的场景:划分除规范的展位后,进入销售阶段,频繁的需要修改这张地图,如展示拆分.合并.换位置.标记已交易. 问题 ...

  3. 利用OpenCV进行动态画椭圆,直线,矩形

    第一次发帖,代码写的不好的地方见谅 两个模块 import cv2 import numpy as np 这里用numpy创建了一个纯白色的背景 img = np.full((480,640,3),2 ...

  4. OpenCV与图像处理学习三——线段、矩形、圆、椭圆、多边形的绘制以及文字的添加

    OpenCV与图像处理学习三--线段.矩形.圆.椭圆.多边形的绘制以及文字的添加 一.OpenCV中的绘图函数 1.1 线段绘制 1.2 矩形绘制 1.3 圆绘制 1.4 椭圆的绘制 1.5 多边形绘 ...

  5. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  6. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  7. 【QT课程设计】五:部分内容修正、利用opencv读入视频并进行部分图像处理

    文章目录 前置文章与导航索引 前言 错误修正 伽马变换数值问题 错误描述 错误修改过程 视频部分 布局设计 opencv的使用 opencv的编译&配置 打开视频 Qtimer简介 视频读取 ...

  8. 使用Python,OpenCV进行基本的图像处理——提取红色圆圈轮廓并绘制

    使用Python,OpenCV进行基本的图像处理--提取红色圆圈轮廓并绘制 1. 效果图 1.1 形态学图像处理效果图 1.2 转换HSV色彩空间提取 2. 源码 2.1 形态学图像处理提取源码 2. ...

  9. 利用opencv进行圆形标志提取和质心计算

    利用opencv进行圆形标志提取和质心计算 最近跟着老师做项目,需要对图片中拍摄的圆形标志点进行检测和提取,查了一些资料和博客,记录一下过程.实际拍摄的图片如图所示: 图片处理过程的大概思路是: 1. ...

最新文章

  1. Comet oj比赛组队
  2. ROS系统的安装 ubuntu 18.04.5 LTS
  3. android enum java包_Android @IntDef注解取代Java enum枚举提高性能详解
  4. 窥视各大网站到底有没有的BUG?
  5. intellij2018修改代码背景颜色
  6. 控制台下载vue_DubboAdmin管理控制台
  7. 构造函数与toString
  8. linux查看虚拟化版本,4.15. 虚拟化 (机器翻译版本)
  9. 运输问题基本解 最小元素法
  10. swftool pdf2swf使用
  11. 机械键盘——红轴、黑轴、茶轴、青轴、奶轴、X轴的故事
  12. 【python做简单的数据分析、绘图】
  13. cc讲故事_停止讲故事
  14. 由浅入深讲二叉树4种遍历算法的由来
  15. 修改客户端 与服务器断开,如何处理服务器或客户端socket断开
  16. 【C语言蓝桥杯每日一题】—— 单词分析
  17. 滕州小学计算机教室,东湖教育四十年|滕州小学--小学校 大世界
  18. android代码实现手机加速功能,神奇的安卓手机提速方法 只需设置两步立即提速70%以上...
  19. Substance 3D Painter 错误求解
  20. 总结下自己做过的深度召回模型

热门文章

  1. html5 dreamlive,熠熠闪耀的ENSEMBLE! DREAM LIVE 5th Tour Stargazer即将开演
  2. 【C++】STL中vector的assign()函数用法
  3. 江湖武侠浪迹天涯网站404页面源码
  4. chown –r mysql:mysql_MySQL安全配置
  5. docke镜像原理、容器数据卷(五)
  6. js解析PSD文件,Java处理psd文件智能图层
  7. Vue 城市联动下拉选择组件实现
  8. 服装摄影Demo——Power BI
  9. 数学之美(二)Java实现绚烂绽放
  10. 安防行业S2B2C系统网站智能化大数据,S2B2C平台助力企业效率成倍提升