小编Jak*_*ruk的帖子

检测台球桌上的球(条纹和固体)

我找不到任何令人满意的答案.我想制作一个程序,从池台上方的摄像头获取快照并检测球.我正在使用OpenCV和Java.我的算法现在基本上是:

模糊图像 - >将RGB转换为HSV - >分割成3个平面 - >在H平面上使用Canny() - >使用HoughCircles()方法检测球

这个算法很好地检测球,它只有两个球的问题(绿色和蓝色,因为表的背景是绿色).但我想更进一步:

  • 检测球是否属于条纹或实体
  • 设置每个球的ID,条纹将具有例如1-7和实体8-14,每个球将具有在游戏期间不改变的唯一ID

你知道如何实现任务#1吗?我的想法是使用inRange()函数,但是我必须为每个在指定颜色范围内检测到一个球的球准备一个掩码,并为每个球做这个检测,对吗?感谢您分享您的意见.

@Edit:在这里,我给你一些我的算法如何工作的样本.我改变了一些参数因为我想要检测所有内容,现在它的效果更差,但它仍然可以很好地准确地运行.我会给你三张来自相机的原始图像样本,我检测到的图像(未失真,带有一些滤镜)和带有检测到的球的图像.

原始图像编号1 Canny图像编号1 检测到的球数为1的图像

原始图像编号2 Canny图像编号2 检测到的球数为2的图像

java opencv

8
推荐指数
1
解决办法
388
查看次数

标签 统计

java ×1

opencv ×1