栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python-opencv检测圆

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python-opencv检测圆

前言

需要用到圆检测,记录一下

代码
# 在一张图片上检测圆
import cv2
import os
import numpy as np


def detect_circle(img):
    """在一张图片上检测圆
    img: 必须是二值化的图
    """
    # img = img * 255
    img_bgr = np.stack([img,img,img],axis=-1)
    img = cv2.medianBlur(img,5)
    # param2越小,检测到的圆越多
    circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
                param1=10,param2=10,minRadius=10,maxRadius=70)
    # print(circles)
    circles = np.uint16(np.around(circles))
    # 因为我这里只检测一个圆,需要检测多个圆的话,就遍历circles
    assert len(circles)==1,f'{circles},not qualify only a circle!'
    (x,y,r) = circles[0][0]
    # input(circles[0,:])
    show = True
    if show==True:
        cv2.circle(img_bgr,(x,y),r,(0,0,255),2)
        # 圆心
        cv2.circle(img_bgr,(x,y),2,(0,255,0),3)
        cv2.imshow('w',img_bgr)
        cv2.waitKey(0)
    # 这里的x对应w,y对应d
    return (x,y,r),img_bgr # 返回横纵坐标和半径、rgb图




if __name__ == '__main__':
    file_path = "../dir_007/pngs/220.png"
    img = cv2.imread(file_path,0)
    # print(np.unique(img))
    detect_circle(img)

结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012280.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号