zoukankan      html  css  js  c++  java
  • 霍夫变换圆形检测

    霍夫变换检测圆的原理:

    大家都知道三点可以确定一个圆,以这三点做所有半径的圆则必有一个公共交点,这个交点为以三点为圆的圆心。

    霍夫变换检测圆形的原理跟检测直线的原理是一样的。圆的表达式为  (x-a)2+(y-b)2=r2 ,

    把问题转换成在求解经过像素点最多的 (a,b,r) 参数对。 

     

        常用检测圆的方法:(本文用的不是该方法)

    参考链接:https://www.cnblogs.com/lancer2015/p/6852488.html

                                 https://blog.csdn.net/poem_qianmo/article/details/26977557

     

     

     代码如下:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    
    using namespace cv;
    using namespace std;
    
    int main(int argc, char** argv) {
        Mat src, dst;
        src = imread("L:/8.png");
        if (!src.data)
        {
            printf("could not load image...
    ");
            return -1;
        }
        char INPUT_TITLE[] = "input image";
        char OUTPUT_TITLE[] = "hough circle demo";
        namedWindow(INPUT_TITLE, CV_WINDOW_AUTOSIZE);
        namedWindow(OUTPUT_TITLE, CV_WINDOW_AUTOSIZE);
        imshow(INPUT_TITLE, src);
        
        //中值滤波
        Mat moutput;
        //GaussianBlur(src, moutput,Size(5,5),0,0);
        medianBlur(src, moutput, 3);
        cvtColor(moutput, moutput, CV_BGR2GRAY);
    
        //霍夫圆检测
        vector<Vec3f>pcircles;
        HoughCircles(moutput,pcircles, CV_HOUGH_GRADIENT, 1, 10, 100, 30, 5, 50);
        src.copyTo(dst);
        for (size_t i = 0; i < pcircles.size(); i++)
        {
            Vec3f cc = pcircles[i];
            circle(dst, Point(cc[0], cc[1]), cc[2], Scalar(0, 0, 255), 1.5, LINE_AA);  //画圆形
    //参数:1.要画的图像 2.圆心 3.半径 4.颜色 5.线的粗细 6.线条类型 circle(dst, Point(cc[
    0], cc[1]), 2, Scalar(0, 255, 0), 2, LINE_AA); //画圆心 } imshow(OUTPUT_TITLE, dst); waitKey(0); return 0; }

    实验结果:

    原图                                                 检测图:

          

  • 相关阅读:
    Navsion二次开发_学习笔记
    《软件开发者路线图:从学徒到高手》笔记
    Concurrency并发性
    Excel VBA 函数
    在excel worksheet中添加button 和对Excel workbook做权限控制相关的新知识
    outline (group) 在Excel worksheet 中
    自主学习进度(软件工程)
    四则运算实现2(JAVA)
    简单四则运算实现(JAVA)
    数学建模(Lingo)(非线性整数规划)
  • 原文地址:https://www.cnblogs.com/Jack-Elvis/p/11457991.html
Copyright © 2011-2022 走看看