19 OpenCV 霍夫曼变换检测圆

文章目录

cv::HoughCircles

因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波。 基于效率考虑,Opencv中实现的霍夫变换圆检测是基于图像梯度的实现,分为两步:

  1. 检测边缘,发现可能的圆心
  2. 基于第一步的基础上从候选圆心开始计算最佳半径大小

算子参数

c 复制代码
HoughCircles(
InputArray image, // 输入图像 ,必须是8位的单通道灰度图像
OutputArray circles, // 输出结果,发现的圆信息
Int method, // 方法 - HOUGH_GRADIENT
Double dp, // dp = 1; 
Double mindist, // 10 最短距离-可以分辨是两个圆的,否则认为是同心圆- src_gray.rows/8
Double param1, // canny edge detection low threshold
Double param2, // 中心点累加器阈值 -- 候选圆心
Int minradius, // 最小半径
Int maxradius//最大半径 
)

示例

c 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

Mat src, src_gray, dst;

const char* output_title = "final image";
int main()
{
	src = imread("test.png");//读取图片
	if (src.empty())
	{
		cout << "could not load img...";
		return -1;
	}
	namedWindow(output_title);//设置窗口名称
	imshow("test", src);

	// 中值滤波
	Mat moutput;
	medianBlur(src, moutput, 3);
	cvtColor(moutput, moutput, COLOR_BGR2GRAY);

	// 霍夫圆检测
	vector<Vec3f> pcircles;

	HoughCircles(moutput, pcircles, 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), 2, LINE_AA);//绘制圆心
		circle(dst, Point(cc[0], cc[1]), 2, Scalar(198, 23, 155), 2, LINE_AA);
	}

	imshow(output_title, dst);
	waitKey(0);
	return 0;
}
相关推荐
龍德明宇1 分钟前
专栏导读:关注龍德明宇,读点AI哲学
人工智能·大语言模型llm·负主体性·ai存在论
2601_966949653 分钟前
实时行情中的成交量 Volume 到底是什么?包含盘中撤单量吗?从交易数据语义到 QuantDash 实战解析
开发语言·人工智能·python·量化·quantdash·量化数据源
lilian2335 分钟前
HarmonyOS 7 新特性(十)|DevEco Code 与 DevEco CLI AI 开发提效
人工智能·华为·harmonyos
muddjsv6 分钟前
AI 编程时代,人的角色是什么?
人工智能
小小程序猴19 分钟前
2026 企业如何借助 AI 培训实现降本增效与业绩增长?实用指南(工程视角)
人工智能
2601_9672642813 分钟前
极客时间 AI Agent 全栈工程师训练营,全套学习资源齐全
人工智能·学习
薛定e的猫咪16 分钟前
(NeurIPS 2022)GraphGPS:MPNN 与全局注意力的融合之道
人工智能·深度学习·学习·算法
LabVIEW开发17 分钟前
把量子纠缠实验搬进屏幕:用 LabVIEW 仿真双光子量子态层析
人工智能·labview·labview知识·labview功能·labview程序
2501_9318197024 分钟前
长沙话标注公司语料数据迭代更新周期过长痛点 信实翻译定期迭代机制实际价值剖析
人工智能·语音识别
chunmiao303231 分钟前
大模型推理加速新方向:中科曙光 ParaCache 用存储换计算
大数据·人工智能