Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于SimpleBlobDetector识别骰子点数

基于SimpleBlobDetector识别骰子点数

作者头像
Color Space
发布于 2022-12-22 07:54:46
发布于 2022-12-22 07:54:46
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

什么是Blob?

Blob是图像中一组相连的像素,它们具有一些共同的属性(例如灰度值),Blob检测的目的是识别并标记这些区域。OpenCV提供了一种方便的方法来检测blob并可以根据不同特征对其进行过滤,它就是SimpleBlobDetector,让我们看一个简单的例子:

上图中有6个骰子,我们希望自动识别骰子的点数,步骤:

① 自适应阈值二值化凸显骰子外轮廓

② 轮廓查找过滤截取每个骰子ROI

③ 使用SimpleBlobDetector检测ROI中的圆,计算点数输出

下面是代码和效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2
# putText函数使用的字体定义
font = cv2.FONT_HERSHEY_SIMPLEX
 
# 读取图片、灰度转换、自适应阈值
img = cv2.imread("A.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                            cv2.THRESH_BINARY_INV,15,3)
# 查看二值化结果
cv2.imshow("thres", thresh)
# 轮廓查找
contours,hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

# 设置SimpleBlobDetector参数
params = cv2.SimpleBlobDetector_Params()

# 通过圆率来过滤>0.7
params.filterByCircularity = True
params.minCircularity = 0.7

# 应用参数
detector = cv2.SimpleBlobDetector_create(params)

# 变量轮廓通过外界矩形宽截取每个骰子ROI
for cnt in contours:
  (x, y, w, h) = cv2.boundingRect(cnt)
  if w > 100 and h > 100:
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
    roi = gray[y:y+h, x:x+w]
    cv2.imshow("roi",roi)
    cv2.waitKey(0)
    # 圆形Blob检测
    keypoints = detector.detect(roi)
    # len(keypoints)就是检测到的圆形Blob数量
    print(len(keypoints))
    cv2.putText(img, str(len(keypoints)), (x+15, y+25), font, 1.0, (0, 0, 255), 2)

# 显示结果
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

当然这是个简单的实例,点数计数也可以用轮廓删选的方法代替,比如大小,宽高比等,本质上和SimpleBlobDetector是类似的,它还可以设置其他参数进行Blob过滤,比如:

具体可以参考这篇文章:https://www.learnopencv.com/blob-detection-using-opencv-python-c/

对于骰子识别,传统算法一般需要分割,然后识别,识别还可以用模板匹配的方法,不妨一试,另外如果你用深度学习的方法,那就多收集标注一些数据,检测就可以一步到位了,比如这种效果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV与AI深度学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
openCV 简单物体识别
本篇的例子介绍使用numpy和 OpenCV ,仅根据识别对象的尺寸和颜色进行简单的物体识别。专业的图像识别须借助机器学习(含神经网络即深度学习),本篇不做介绍。
用户6021899
2019/09/04
5.9K0
openCV 简单物体识别
OpenCV轮廓按面积大小排序(附Python/C++代码)
今天分享一个使用OpenCV给轮廓排序的例子,排序是依据轮廓面积的大小,当然你还可以改成其他的,比如宽高,长度等。
Color Space
2020/05/22
7.4K1
使用python3.7和opencv4.1来实现人脸识别和人脸特征比对以及模型训练
     OpenCV4.1已经发布将近一年了,其人脸识别速度和性能有了一定的提高,这里我们使用opencv来做一个实时活体面部识别的demo
用户9127725
2022/08/08
1.9K0
Halcon缺陷检测实例转OpenCV实现(三)
本期文章继续介绍缺陷检测专题的第三个案例,用OpenCV实现Halcon中一个物体凸缺陷检测的实例,前两个案例链接如上↑↑↑。
Color Space
2020/12/22
1.6K0
Halcon缺陷检测实例转OpenCV实现(三)
三个OpenCV目标分割计数实例(附源码)
中间执行结果略去,大家可以复制源码和图片自己运行,查看中间结果,简单来做个总结:
Color Space
2023/10/18
9840
三个OpenCV目标分割计数实例(附源码)
实战 | Halcon实例转OpenCV实现-复杂背景下OCR数字识别(附源码)
本文主要介绍一个复杂背景下OCR数字提取识别实例,并将Halcon实现转为OpenCV。
Color Space
2021/10/09
2.2K0
实战 | Halcon实例转OpenCV实现-复杂背景下OCR数字识别(附源码)
OpenCV检测轮廓极点(Python C++)
今天分享一个OpenCV检测轮廓极点实例,原图如下,我们需要检测出地图中最大轮廓的上下左右四个极点,并进行标注显示。
Color Space
2020/08/21
1.4K0
OpenCV检测轮廓极点(Python C++)
Halcon缺陷检测实例转OpenCV实现(一)
Halcon中对应的例子为novelty_detection_dyn_threshold.hdev,如下:
Color Space
2020/12/08
1.4K0
python进阶——人工智能视觉识别
python在人工智能方面可以毫不客气的说,比其他的所有语言都要有优势,因为python的背后有一个非常强大的资源库来支撑着python运作。
淼学派对
2023/10/14
4200
python进阶——人工智能视觉识别
Halcon转OpenCV实例--复杂背景下缺陷检测(附源码)
导读 本文主要介绍一个复杂背景下缺陷检测的实例,并将Halcon实现转为OpenCV。 实例来源 实例来源于51Halcon论坛的讨论贴: https://www.51halcon.com/foru
Color Space
2021/07/01
2.2K0
实战 | OpenCV+OCR实现环形文字识别实例(详细步骤 + 代码)
光学字符识别(OCR)场景中有很多特殊情况,比如噪声、脏污、倾斜、变形等,都会对识别造成影响。环形文字也是其中一种,我们通常不能直接识别它们,而是先将文字转换到水平方向,再做识别。如下图所示:
Color Space
2022/05/25
2.9K0
实战 | OpenCV+OCR实现环形文字识别实例(详细步骤 + 代码)
实战 | 基于OpenCV的停车场空余车位实时监测系统(详细步骤 + 源码)
本文主要介绍如何使用Python和OpenCV实现一个停车场空余车位实时监测系统,并包含详细步骤和源码。
Color Space
2022/12/22
1.8K0
实战 | 基于OpenCV的停车场空余车位实时监测系统(详细步骤 + 源码)
OpenCV:目标跟踪。
下面就通过计算视频帧之间的差异(即考虑背景帧和其他帧之间的差异),进而实现目标跟踪。
AiTechYun
2019/07/17
2K0
OpenCV:目标跟踪。
神器!使用Python 轻松识别验证码
在我们进行自动化测试的过程中,免不了要在登录时遇到验证码,很多时候我们都是只能找开发要万能验证码或者暂时关闭验证码这个功能,但是有时候我们必须要验证码是否能够正常生成,所以在这个时候,我们需要做的就是输入验证码,但是验证码这个东西是随机生成的,不是每一次都一样,所以我们还是需要识别然后输入,脚本是没有眼睛的,只能通过代码来进行识别,所以本文就来给大家介绍一下如何使用Python来轻松识别数字验证码。
霍格沃兹测试开发Muller老师
2024/05/12
5520
OpenCV-简易答题卡识别
参考自:https://www.pyimagesearch.com/2016/10/03/bubble-sheet-multiple-choice-scanner-and-test-grader-using-omr-python-and-opencv/
xxpcb
2020/08/04
1.4K0
基于OpenCV实现简单人脸面具、眼镜、胡须、鼻子特效(详细步骤 + 源码)
本文给大家分享一个基于OpenCV实现简单人脸面具、眼镜、胡须、鼻子特效的实例,并附实现步骤和源码。
Color Space
2022/04/06
2.6K0
基于OpenCV实现简单人脸面具、眼镜、胡须、鼻子特效(详细步骤 + 源码)
OpenCV实战:从图像处理到深度学习的全面指南
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它由一系列的C函数和少量C++类构成,同时提供Python、Java和MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
TechLead
2023/10/21
1.2K0
OpenCV实战:从图像处理到深度学习的全面指南
我佛了!用KNN实现验证码识别,又 Get 到一招!
验证码使我们生活中最为常见的防治爬虫和机器人登录攻击的手段,一般的验证码主要由数字和字母组成,故我们可以设想:我们是否可以根据文本识别训练模型进行识别验证码呢?当然可以,今天我们就将利用KNN实现验证码的识别。
AI科技大本营
2020/05/25
5200
我佛了!用KNN实现验证码识别,又 Get 到一招!
交流群里的两个实例--直接放源码了
本文主要介绍交流群里的两个实例,直接放源码。(公众号:OpenCV与AI深度学习)
Color Space
2022/09/26
6400
附代码 | OpenCV实现银行卡号识别,字符识别算法你知多少?
随着计算机视觉在我们生活中的应用越来越广泛,大量的字符识别和提取应用逐渐变得越来越受欢迎,同时也便利了我们的生活。像我们生活中的凭借身份码取快递、超市扫码支付的机器等等。
AI科技大本营
2020/05/29
2.2K0
附代码 | OpenCV实现银行卡号识别,字符识别算法你知多少?
推荐阅读
相关推荐
openCV 简单物体识别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档