首页 > 其他分享 >线上初赛1——小球识别

线上初赛1——小球识别

时间:2023-05-25 19:34:54浏览次数:51  
标签:gray img imshow 小球 初赛 线上 canny 80 cv

线上初赛1——小球识别

本文转载自python下用OpenCV的圆形检测 - CosmosbipinnatusCav - 博客园 (cnblogs.com)

一、简介

​ 对于圆形物体识别问题,opencv提供了大量方法。

二、检测步骤

2.1 读取图像

调用imread函数即可。

img = cv.imread('ball.png')
cv.imshow('image', img)

2.2 模糊处理

模糊处理,减少噪音影响。

由于图像中存在大量噪点(什么是噪点参考https://www.zhihu.com/question/23877970),利用降噪方法cv2.blur(img, (5,5))。其中两个参数为横向纵向的模糊程度,数值越大越模糊,这是5,5的模糊程度。

# 进行模糊处理,帮助减少噪音
blurred = cv.blur(img, (5, 5))

2.3 灰度处理

# 转换为灰度图像
gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY)

2.4 霍夫变换圆检测

那么什么是canny算法呢?简单来说就是边缘检测算法

具体实现效果可以参考方法:cv2.Canny(img, 27, 54),显示效果为

加大参数边缘就越少,我们用到的就是这种效果,即设置上限为80

cv2.Canny(img, 40, 80)

canny = cv.Canny(img, 40, 80)
cv.imshow('canny', canny)

之前的降噪和灰度化都是为了这一步的检测。

参考文章http://lib.csdn.net/article/opencv/24037

方法如下:

cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,1,50,param1=80,param2=30,minRadius=15,maxRadius=20

参数1 image:传递图像

参数2 method:默认,不用理解

参数3 dp:默认,不用理解

参数4 minDist:不同圆心的最小距离,单位为像素

参数5 涉及到Canny算法,这里的80为canny算法的上限,这里的canny算法下限自动设置为为上限一半,马上介绍canny算法

参数6 需要理解上面的参考文章,可以认为是需要达到的累加数量

参数7,8 为最小半径和最大半径,避免识别白色的圆圈

效果如下图所示:

2.5 结果


2.6 完整代码

import cv2 as cv
import numpy as np

if __name__ == '__main__':
    img = cv.imread('ball.png')
    cv.imshow('image', img)

    # 进行模糊处理,帮助减少噪音
    blurred = cv.blur(img, (5, 5))

    # 转换为灰度图像
    gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY)

    # cv.imshow("gray image", gray)

    canny = cv.Canny(img, 40, 80)
    cv.imshow('canny', canny)

    # 使用Hough变换检测圆形
    circles = cv.HoughCircles(
        gray, cv.HOUGH_GRADIENT, dp=1, minDist=20, param1=50, param2=30, minRadius=80, maxRadius=100
    )

    # 确保至少检测到一个圆
    if circles is not None:
        circles = np.round(circles[0, :]).astype("int")

        # 循环遍历检测到的圆并绘制它们
        for (x, y, r) in circles:
            print("radius: %d, x_axis: %d, y_axis: %d" % (r, x, y))
            cv.circle(img, (x, y), r, (0, 255, 0), 4)
            cv.rectangle(img, (x-5, y-5), (x+5, y+5), (0, 128, 255), -1)
            cv.putText(img, "center", (x - 20, y - 20), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

        # 显示带有圆心的图像
        cv.imshow("Detected Circles", img)
        cv.waitKey(0)
        cv.destroyAllWindows()

标签:gray,img,imshow,小球,初赛,线上,canny,80,cv
From: https://www.cnblogs.com/chickchick/p/17432640.html

相关文章

  • APIO 2023 线上游记
    2023/5/17润回上海,面基计划被迫取消了。真难过。话说我好像是第一次一个人坐火车,感觉很棒,虽然感觉少了很多流程,比如kfc()睡大觉。2023/5/18模拟赛,峰老师的信心场,打的还行,但是排名不高,下分了。larryzhong6500了,真有趣。下午乱做了点题,通关了Patrick'sParabox,然后开摆......
  • 2017第二届广东省强网杯线上赛--------phone number
    ================================个人收获:1.sql语句里面也可以直接用database()2.跟数据库有联系的地方都可能存在注入 ================================题目: 开始前对源码,http请求,路径。。这些都找过没什么有用的信息。就只有这个还有点用,再检查手机号使用人数页面的源码有这......
  • 线上问题SLA治理
    背景去年部门里很重要的OKR就是线上问题SLA达成率,背后的核心就是需要近可能快速响应商家的咨询和反馈,服务好金主爸爸,在当前的世道下,只有服务好客户才能活下去。在H1的减员增效后,就没剩下几个技术支持了,客满、服务同学的问题大多都需要研发承接,需要安排值班的同学来承接这部分线......
  • 5大主流方案对比:MySQL千亿级数据线上平滑扩容实战
    转载于:https://mp.weixin.qq.com/s/DWUIy0Bt2Jw-lHRGm50cow1.五个方案1.1停机方案1.2停写方案1.3日志方案1.4双写方案(中小型数据)1.5平滑2N方案(大数据量)2. 平滑2N扩容方案实践2.1 实现应用服务级别的动态扩容2.2 实现数据库的秒级平滑2N扩容3.keepalived......
  • 记一次线上空指针问题排查
    前言今天收到一封告警邮件,内容如下com.example.dubbo.filter.ExceptionFilter#invoke[traceId][DubboServerHandler-thread-19][DUBBO]Gotuncheckedandundeclaredexceptionwhichcalledbyip.service:com.example.TestService,method:testMethod,exception:ja......
  • 众惠数字生活正打造的线上线下新型消费平台!
    众惠数字生活是一个全新的概念,它代表着人们对于数字化生活的越来越高的需求。众惠数字生活,简单来说就是通过数字技术和互联网平台,为人们提供更加便捷、高效、安全、绿色的生活服务。众惠数字生活是数字化时代强调个性化、智能化、共享化的一种表现形式。在数字化时代,我们的生活方式......
  • 线上分支合并
    1.master不存在数据: 2.dev存在两条数据: 3.根据命令:gitpushorigindev从本地dev分支推送到远程dev: 4.线上从dev分支合并到master分支: 5.线上dev合并到master分支,添加备注: 6.线上审查和测试: 7.审查和测试通过后合并分支: 8.线上dev分支代码合并到线上master......
  • 选择好用的线上甘特图制作工具
    在日常工作中,我们需要经常安排任务的时间,并进行合理的排期,以确保项目顺利完成。但面对繁多的任务和时间紧迫,排期往往成为工作中的一大问题。在这种情况下,选择一个好用的线上甘特图制作工具,可以非常有效地帮助我们解决这个问题。 知竹甘特图是一款操作简便,界面清晰的在线免费甘......
  • 线上FullGC问题排查实践——手把手教你排查线上问题
    作者:京东科技韩国凯一、问题发现与排查1.1找到问题原因问题起因是我们收到了jdos的容器CPU告警,CPU使用率已经达到104%观察该机器日志发现,此时有很多线程在执行跑批任务。正常来说,跑批任务是低CPU高内存型,所以此时考虑是FullGC引起的大量CPU占用(之前有类似情况,告知用户后重......
  • 2022年第一个线上问题,被领导骂惨了!
    hi大家好,我是田哥全职做面试辅导和技术支持的田哥。昨天,一位朋友说他们生产环境出bug了,哎,年底了,今年的年终奖估计凉凉了!这位朋友刚刚出道不久,出了问题,第一时间找的我。他把出问题的代码发我了,叫我帮他review这段代码。for(ProductOrderItemorderItem:orderItemList){if......