OpenCV查找图片中的圆形2

这篇博客是《OpenCV系列教程》的一部分,主要介绍如何在图像中寻找最大的、完整的圆形。通过调整参数,如直径设定为900,以及设置最小半径(minRadius:500)和最大半径(maxRadius:1000),来确保找到的圆形满足特定条件。

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

《OpenCV系列教程》
项目位置:OpenCV-Sample
代码位置:28-FindCircles2.py
在一些特定的环境下,需要找到特定的圆形。如下的情况是我最理想的查找方式了。
在这里插入图片描述
找最大的那个圆,还得是完整的。

import cv2 as cv
import numpy as np


src = cv.imread('./res/IMG00868.jpg', cv.IMREAD_COLOR)
height, width = src.shape[:2]
print("height : " + str(height) + ', width : ' + str(width))

img = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
img = cv.medianBlur(img, 5)
cimg = src.copy()

circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 900, np.array([]), 100, 30, 500, 1000)
if circles is not None:
    a, b, c = circles.shape
    print(str(circles))
    for i in range(b):
        if(circles[0][i][0] + circles[0][i][2] < width and circles[0][i][1] + circles[0][i][2] < height and circles[0][i][2] < circles[0][i][0] and circles[0][i][2] < circles[0][i][1]):
            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
            print(circles[0][i][0])
            print(circles[0][i][1])
            print(circles[0][i][2])

    #cv.imshow("detected circles", cimg)
    cv.imwrite('./res/IMG00868C.jpg', cimg)

cv.waitKey(0)

这里有几个重要的参数。一个是900这个参数,类似于直径。后面的500和1000就是minRadius和maxRadius。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值