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使用xmlrpc实例讲解
Dec 17 Python
Python中操作文件之write()方法的使用教程
May 25 Python
Python实现的Excel文件读写类
Jul 30 Python
Python编程中的异常处理教程
Aug 21 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
python中append实例用法总结
Jul 30 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
virtualenv介绍及简明教程
Jun 23 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
一些让Python代码简洁的实用技巧总结
Aug 23 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中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
php数组删除元素示例
2014/03/21 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
php短信接口代码
2016/05/13 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
Python实现的递归神经网络简单示例
2017/08/11 Python
Python实现两款计算器功能示例
2017/12/19 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
经典的班主任推荐信
2013/10/28 职场文书
销售部主管岗位职责
2013/12/18 职场文书
2015年药店工作总结
2015/04/20 职场文书
电影圆明园观后感
2015/06/03 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android
服务器nginx权限被拒绝解决案例
2022/09/23 Servers