OpenCV找出图片中的圆并标注圆心

这篇具有很好参考价值的文章主要介绍了OpenCV找出图片中的圆并标注圆心。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、概述

  案例:输入一张图片找到图片中的一个圆,并标注圆心

  实现步骤:

    1.输入原图

    2.图像图像灰度化

    3.图像二值化

    4.执行形态学操作去除噪点

    5.边缘检测

    6.轮廓发现

    7.根据面积和纵横比过滤目标轮廓

    8.找出圆心并绘制圆心

    9.在原图上也绘制圆心并输出

2、代码示例

//【1】载入图像
    Mat src = imread(filePath);
    Mat src_clone = src.clone();
    if(src.empty()){
        qDebug()<<"图片为空";
        return;
    }
    imshow("src",src);
    //21】转灰度图
    Mat gray;
    cvtColor(src,gray,COLOR_BGR2GRAY);
    //【3】图像二值化
    threshold(gray,gray,0,255,THRESH_BINARY|THRESH_OTSU);
    imshow("threshold",gray);
    //【4】执行形态学开操作去除噪点
    Mat kernel = getStructuringElement(MORPH_RECT,Size(20,20),Point(-1,-1));
    morphologyEx(gray,gray,MORPH_OPEN,kernel,Point(-1,-1),1);
    imshow("morphologyEx",gray);

    //【5】边缘检测
    Canny(gray,gray,0,255);
    imshow("canny",gray);

    //【6】轮廓发现
    vector<vector<Point>> contours;
    vector<Vec4i> her;
    findContours(gray,contours,her,RETR_TREE,CHAIN_APPROX_SIMPLE);
    Mat resultImage = Mat::zeros(gray.size(),CV_8UC3);
    RNG rng(12345);
    double area = 0.0;
    Point pRadius;
    for(size_t i = 0;i<contours.size();i++){
        double area = contourArea(contours[i],false);
         //【7】根据面积及纵横比过滤轮廓
        if(area>200){
            Rect rect = boundingRect(contours[i]);
            float scale = float(rect.width)/float(rect.height);
            if(scale<1.1&&scale>0.9){
                drawContours(resultImage,contours,i,Scalar(rng.uniform(0,255),rng.uniform(0,255),rng.uniform(0,255)),-1);
                int x = rect.width/2;
                int y = rect.height/2;
                 //【8】找出圆心并绘制
                pRadius=Point(rect.x+x,rect.y+y);
                circle(resultImage,pRadius,2,Scalar(0,0,255),2);
            }
        }

    }
     imshow("resultImage",resultImage);
    //【9】在原图上绘制圆心,这一步要不要都行,因为坐标都找出来了,可以随便标注
    circle(src_clone,pRadius,2,Scalar(0,0,255),2);
    imshow("src_clone",src_clone);

3、图片示例

opencv找圆,Qt开发,opencv,图像处理,qt开发,C/C++,计算机视觉

 本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓文章来源地址https://www.toymoban.com/news/detail-516445.html

到了这里,关于OpenCV找出图片中的圆并标注圆心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用opencv+tesseract识别图片中的表格

    在java环境中使用opencv和tesserac识别一个图片表格 环境:opencv和tesseract安装在linux环境下,docker将运行springboot服务 opencv和tesseract的安装和docker加载可参考之前的文章 将图片进行预处理,过滤掉颜色等干扰元素 提取图片的水平线和垂直线,并进行重叠过滤 得到水平线和垂直线

    2024年02月21日
    浏览(36)
  • OpenCV中的GUI特性 —— 图片与视频的读写和显示

    在这一部分我们将介绍在OpenCV中的GUI特性之图片和视频的读写和显示,包括图像的cv.imread / imshow / imwrite和VideoCapture/Writer等函数的使用 1.1 在OpenCV中的图片读写和展示 在OpenCV中的基础图片操作涉及了三个函数: cv.imread() , cv.imshow() , cv.imwrite() 1.1.1 cv.imread()读取图像 使用imr

    2023年04月08日
    浏览(56)
  • OpenCV minMaxLoc()函数找出图像中最小值最大值

    OpenCV 找出图像中最小值最大值函数minMaxLoc的使用 功能:从一个矩阵中找出全局的最大值和最小值。 函数cv::minMaxLoc找出最大和最小元素的值和他们的位置。极值是遍历整个矩阵找到,或者当掩码不是一个空矩阵时,是通过遍历指定矩阵区域找到。 函数不适用于多通道矩阵,

    2024年02月08日
    浏览(50)
  • 使用python_opencv比较图像差异/使用python_opencv找出两张图像的差异范围

    目录 1 创建conda环境 2 安装python库  2.1 报错 ModuleNotFoundError: No module named \\\'numpy\\\' 3 image_diff.py

    2024年02月05日
    浏览(43)
  • 使用Python+OpenCV2进行图片中的文字分割(支持竖版)

    把图片中的文字,识别出来,并将每个字的图片抠出来; 原图片: 分割后文件夹: 可见此时文件都还是数字为文件名称,那么接下来要利用OCR自动给每个文字图片文件命名 我们使用UMIOCR , UMI-OCR的安装建议去GITHUB上查,windows上部署还是很方便的; 这里使用本机安装好的

    2024年02月20日
    浏览(37)
  • 毕设开源 在iOS上使用OpenCV实现图片中的文字框选

    在iOS上使用OpenCV实现图片中的文字框选 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 首先,需要去OpenCV官网下载iOS的framework,下载好后拖入新建的工程中即可,由于OpenCV库是使用C++编写,所以swift无法直接使用,需要使用OC做桥接,需要使用swift的同学可以看

    2024年03月25日
    浏览(38)
  • OPENCV C++(七)霍夫线检测+找出轮廓和外接矩形+改进旋转

    霍夫线检测  定义存放输出线的向量 此向量输出有距离,角度 因为检测的原理就是在变换霍夫空间里面去检测的,这里可以理解为极坐标 第3个参数是距离精度 第四个参数是角度精度,第五个是阈值,只有点超过90个才算一条线 在图中画线操作: 这里是画线操作  概率霍夫

    2024年02月13日
    浏览(47)
  • 计算机毕设分享 在iOS上使用OpenCV实现图片中的文字框选

    在iOS上使用OpenCV实现图片中的文字框选 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 首先,需要去OpenCV官网下载iOS的framework,下载好后拖入新建的工程中即可,由于OpenCV库是使用C++编写,所以swift无法直接使用,需要使用OC做桥接,需要使用swift的同学可以看

    2024年02月21日
    浏览(50)
  • QT+OpenCV实现一个标注工具(图像处理、边缘检测)

    作者是一名QT初学者,为检验学习成果及完成毕业设计,在张老师和学姐的指导下,开发了这个标注工具。CSDN上很多文章对我的学习提供了极大的帮助,分享这篇文章给需要的人一起学习进步~ 废话不多说,先看看效果: Windows10、Qt5.13.2(编译器用的是MinGW64_bit)、OpenCV4.1 环

    2024年02月11日
    浏览(45)
  • 使用Python和OpenCV批量可视化labelme分割标注结果

    【原创声明】 本文为博主原创文章,未经博主允许不得转载。 更多算法总结请关注我的博客:https://blog.csdn.net/suiyingy。         在计算机视觉领域中,图像分割是一项重要的任务,它可以将图像中的不同物体或区域进行像素级别的分割。而在图像分割任务中,人工标注数

    2024年04月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包