opencv霍夫找圆

博客围绕OpenCV霍夫找圆展开,OpenCV是图像处理领域重要工具,霍夫变换是其用于检测特定形状的算法,此次聚焦于利用该算法在图像中寻找圆形,在图像处理等信息技术领域有重要应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace cv;
using namespace std;
int main()
{
	
 Mat img2= imread("C:\\Users\\精锐视觉\\Desktop\\图片07\\11.bmp");
 Rect r1;
 r1.x = 3784;
 r1.y = 2465;
 r1.width = 90;
 r1.height = 90;
Mat d1 = Mat(img2, r1);
Mat d2;
 cvtColor(d1, d2, COLOR_BGR2GRAY);

 //threshold(d1, d1, 80, 255, CV_THRESH_BINARY);
 vector<Vec3f> circles;
 HoughCircles(d2, circles, HOUGH_GRADIENT,  1.5,10,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(d1, center, 3, Scalar(0, 0, 255), -1, 8, 0);
	 //绘制圆的轮廓
	         circle(d1, center, radius, Scalar(0, 0, 255), 3, 8, 0);
	 
		      }






 imshow("匹配后的图片", d1);

	cvWaitKey(0);
    return 0;

}

 

### 霍夫变换用于椭检测 霍夫变换最初被设计用来检测直线,但随着技术的发展,也能够应用于其他几何形状的检测,比如形和椭。然而,标准的霍夫变换并不直接支持椭检测,因为这涉及到五个参数(中心位置\( (x_0, y_0) \),长短轴长度以及旋转角度),而不仅仅是两个或三个。 对于椭检测,通常采用的是改进版的霍夫变换——随机抽样一致算法(RANSAC)[^1] 或者基于累积投票机制的变体来减少计算复杂度并提高效率。另一种方法是在边缘点集上应用特定条件下的拟合过程。 下面展示一段Python代码片段,演示如何使用`cv2.fitEllipse()`函数作为替代方案来进行椭拟合: ```python import cv2 import numpy as np # 加载灰度图像 img = cv2.imread('ellipse.png', 0) # 使用Canny算子获取边界 edges = cv2.Canny(img, 50, 150) # 查轮廓 contours, _ = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2:] for cnt in contours: # 如果轮廓面积太小则忽略它 if cv2.contourArea(cnt) < 25: continue # 对每个符合条件的大轮廓尝试拟合成椭 ellipse = cv2.fitEllipse(cnt) # 绘制结果 img_color = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) cv2.ellipse(img_color, ellipse, (0,255,0), 2) # 显示最终效果图 cv2.imshow("Detected Ellipses", img_color) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段程序首先读取一张图片,并对其进行预处理以提取出可能属于椭边界的像素;接着通过寻这些边界形成的闭合区域即轮廓(contours);最后对每一个较大的轮廓调用`fitEllipse()`完成椭匹配工作。 值得注意的是,虽然这里并没有严格意义上实现了传统意义上的“霍夫变换”,而是采用了更高效的近似方式,但在实际应用场景中往往可以获得满意的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xutingjie168

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值