首页 > 编程语言 >C++ opencv检测圆

C++ opencv检测圆

时间:2023-12-30 21:22:54浏览次数:22  
标签:circles src cvRound int 检测 C++ opencv Detected include

 

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    // 读取图像
    Mat src = imread(argv[1], IMREAD_COLOR);
    if (!src.data) {
        cout << "Could not open or find the image" << endl;
        return -1;
    }

    // 转换为灰度图像
    Mat gray;
    cvtColor(src, gray, COLOR_BGR2GRAY);

    // 使用Canny边缘检测
    Mat edges;
    Canny(gray, edges, 50, 200);

    // 使用Hough变换检测圆
    vector<Vec3f> circles;
    HoughCircles(edges, circles, CV_HOUGH_GRADIENT, 1, gray.rows/8, 200, 100, 0, 0);

    // 在原图上绘制检测到的圆
    for (size_t i = 0; i < circles.size(); i++) {
        Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
        int radius = cvRound(circles[i][2]);
        circle(src, center, radius, Scalar(0,255,0), 2, FILLED);
    }

    // 显示结果
    namedWindow("Detected circles", WINDOW_AUTOSIZE);
    imshow("Detected circles", src);
    waitKey(0);

    return 0;
}

 

 

###

标签:circles,src,cvRound,int,检测,C++,opencv,Detected,include
From: https://www.cnblogs.com/herd/p/17935270.html

相关文章

  • C++U3-第07课-模拟枚举
    学习目标 枚举算法意思示例枚举重点[【模拟枚举】水仙花数]  【题意分析】我们需要找出区间内所有的水仙花数【思路分析】用for循环的方式去判断从100到999的每一个数将当前的数个位、十位、百位求出判断每一位的数的次方之和是否等于本身【参考代码】......
  • C++STL常用容器deque以及常用接口
    2.1deque容器2.1.1deque容器基本概念功能:双端队列容器,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比vector快vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理:......
  • Python OpenCV 截取图片中的小图片
    1importcv22importnumpyasnp3importmatplotlib.pyplotasplt45#读取图像并转换为灰度图像6image=cv2.imread('./a.jpg')7gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)89#使用Canny边缘检测10edges=cv2.Canny(gray,0,200)#调......
  • Python OpenCV 去除截图中的所有图片
    1importcv22importnumpyasnp3importmatplotlib.pyplotasplt45#读取图像并转换为灰度图像6image=cv2.imread('./a.jpg')7gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)89#使用Canny边缘检测10edges=cv2.Canny(gray,0,200)#调......
  • GroundingDINO-根据文本提示检测任意目标
    1.背景介绍GroundingDINO是一种新的SOTA零样本物体检测模型。在这篇文章中,我们将讨论GroundingDINO模型的优势,分析其具体的模型架构,并提供真实的测试样例。闲话少说,我们直接开始吧!2.零样本目标检测大多数目标检测模型被训练来识别预先定义的特定类别的集合,这方面的主要缺陷是缺乏......
  • 从C到C++1
    一.思想过渡前言:明确地说,学了C语言就相当于学了C++的一半,从C语言转向C++时,不需要再从头开始,接着C语言往下学就可以,所以我强烈建议先学C语言再学C++。1.面向过程与面向对象 从“学院派”的角度来说,C++支持面向过程编程、面向对象编程和泛型编程,而C语言仅支持面向过程编程。就......
  • C++基础 -13- 类的字节对齐
    ———————标准输入输出——————— ......
  • c++参数传递
    值交换传参voidswap(int,int)//值传递voidswap(int*,int*)//地址传递voidswap(int&,int&)//引用传递指针的指针传参#include<iostream>#include<string>voidfind2(chararray[],charsearch,char**ppa);usingnamespacestd;intmain(){ charstr[]......
  • C++STL常用容器vector以及常用接口
    2.0vector容器2.1.1vector基本概念功能:vector数据结构和数组非常相似,也称为矢量,向量vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间vector容器的迭代器是支持随......
  • c++教程3控制结构与函数
    3控制结构与函数ifswitchforwhile声明函数传递参数重载函数优化函数3.1ifC++if关键字执行基本的条件测试,对给定表达式进行布尔值(true或false)求值,其语法如下:if(test-expression){statements-to-execute-when-true}测试后面的大括号可......