python微信跳一跳系列之棋子定位颜色识别


Posted in Python onFebruary 26, 2018

python微信跳一跳,前言

这是python玩跳一跳系列博文中一篇,主要内容是用颜色识别的方法来进行跳跳小人的定位。

颜色识别

通过观察,我们可以发现,尽管背景和棋子在不停的变化,但跳跳小人的形状和颜色基本保持不变,对于形状,我们在上一篇博文中已经采用模板匹配的方法来进行识别定位,效果非常好。这一篇博文就来对颜色识别进行验证。

基本思路

用HSV颜色空间对输入的图片进行处理,用某种指定的颜色进行蒙版mask处理进而得到二值化的黑白图像,膨胀和腐蚀后去除噪点,对轮廓区域进行计算,画出圆心和质心位置,并实现动态的跟踪。
其基本的步骤如下:
设定需要的颜色阈值
读入图像
转化为HSV图像
采用颜色的蒙版进行二值化处理得到黑白图像
降噪和轮廓处理
绘出圆心

python3.6代码

import cv2 
import numpy as np 
import time

lower_blue = np.array([115,75,75]) #设定蓝色的阈值
upper_blue = np.array([130,255,125])

frame=cv2.imread('001.png')

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) #转到HSV空间
mask_blue = cv2.inRange(hsv, lower_blue, upper_blue)
cnts = cv2.findContours(mask_blue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2] 
if len(cnts) > 0: 
 c = max(cnts, key = cv2.contourArea) #找到面积最大的轮廓
 ((x, y), radius) = cv2.minEnclosingCircle(c) #确定面积最大的轮廓的外接圆

 center= (int(x),int(y))
 cv2.circle(frame, center, int(radius+10), (0, 0, 255), 3) #画出圆心 
 cv2.circle(frame, center, 3, (0, 0, 255), -1)
 cv2.circle(hsv, center, int(radius+10), (255, 255, 255), 3) #画出圆心 
 cv2.circle(hsv, center, 3, (0, 0, 255), -1) 
 cv2.circle(mask_blue, center, int(radius+10), (255, 255, 255), 3) #画出圆心 
 cv2.circle(mask_blue, center, 3, (0, 0, 255), -1) 

cv2.imshow('frame',frame)
cv2.imshow('hsv',hsv)
cv2.imshow('mask',mask_blue)
if cv2.waitKey(0)==ord('q'):
 cv2.destroyAllWindows()

静态图片识别效果

python微信跳一跳系列之棋子定位颜色识别

左边是原始图片,中间是蒙版后的二值图,右边就是HSV图像,识别效果还是不错的。
可以看到,目前选定的颜色基本可以将小人的轮廓全部筛选出来,其最大的部分恰好就在底盘,圆心位置正是我们需要的。

动态实时识别

我们给出动态图,可以看一下动态实时识别的效果。

python微信跳一跳系列之棋子定位颜色识别

评价

采用颜色来对跳跳小人的底盘位置进行识别和定位效果不错,而且这种方法和手机的像素及屏幕大小无关,真正实现了各平台通用。

预告

在下一篇博文中,我会对github上wechat-jump所采用的颜色遍历方法进行验证,敬请期待。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用Python演示数型数据结构的教程
Apr 03 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python IDLE入门简介
Dec 08 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
使用python自动追踪你的快递(物流推送邮箱)
Mar 17 Python
Python绘制动态水球图过程详解
Jun 03 Python
Python filter过滤器原理及实例应用
Aug 18 Python
Django celery异步任务实现代码示例
Nov 26 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 #Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 #Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 #Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 #Python
tensorflow入门之训练简单的神经网络方法
Feb 26 #Python
基于Python实现的微信好友数据分析
Feb 26 #Python
TensorFlow 实战之实现卷积神经网络的实例讲解
Feb 26 #Python
You might like
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
python遍历路径破解表单的示例
2020/11/21 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
.net开发工程师面试题
2014/02/25 面试题
副总经理工作职责
2013/11/28 职场文书
工商治理实习生的自我评价
2014/01/15 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
python办公自动化之excel的操作
2021/05/23 Python