OpenCV查找图片中的圆形

本篇博客是《OpenCV系列教程》的一部分,重点介绍了如何利用OpenCV的HoughCircles函数在图像中查找圆形。通过提供的代码示例27-FindCircles.py,可以实现对圆形的检测,展示效果显著。
摘要由CSDN通过智能技术生成

《OpenCV系列教程》
项目位置:OpenCV-Sample
代码位置:27-FindCircles.py

import cv2 as cv
import numpy as np


src = cv.imread('./res/board.jpg', cv.IMREAD_COLOR)
img = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
img = cv.medianBlur(img, 5)
cimg = src.copy()

circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 10, np.array([]), 100, 30, 1, 20)
if circles is not None:
    a, b, c = circles.shape
    print(str(circles))
    for i in range(b):
        cv.circle(cimg, (circles[0][i][0], circles[0][i][1]), circles[0][i][2], (0, 0, 255), 3, cv.LINE_AA)
        cv.circle(cimg, (circles[0][i][0], circles[0][i][1]), 2, (0, 255, 0), 3, cv.LINE_AA)  # draw center of circle

    cv.imshow("detected circles", cimg)

cv.waitKey(0)

主要就是个cv.HoughCircles函数
效果如下:
在这里插入图片描述

要提取圆形区域圆形斑点,你可以使用OpenCV的二值化和形态学操作。 下面是一个示例代码,演示了如何使用二值化和形态学操作来提取圆形区域圆形斑点: ```python import cv2 import numpy as np # 读取图像 img = cv2.imread('circle_roi.jpg') # 灰度化和二值化 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU) # 形态学操作 kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)) opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2) closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel, iterations=2) # 查找轮廓 contours, hierarchy = cv2.findContours(closing, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 绘制轮廓 for i, contour in enumerate(contours): area = cv2.contourArea(contour) if area < 10 or area > 100: continue (x, y), radius = cv2.minEnclosingCircle(contour) center = (int(x), int(y)) radius = int(radius) cv2.circle(img, center, radius, (0, 255, 0), 2) # 显示结果 cv2.imshow('result', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这里,我们首先将圆形区域进行灰度化和二值化,然后使用形态学操作来去除噪点和孔洞。接着,我们使用cv2.findContours()函数查找轮廓,并使用cv2.minEnclosingCircle()函数计算每个轮廓的最小外接,如果圆形斑点的面积在10到100之间,就绘制出来。 在循环,我们将绘制出的圆形斑点通过cv2.imshow()函数显示出来,你可以更改代码来保存提取的圆形斑点或进行其他操作。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值