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合并文本文件示例
Feb 07 Python
简单说明Python中的装饰器的用法
Apr 24 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
python将字符串转变成dict格式的实现
Nov 18 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
jupyter lab文件导出/下载方式
Apr 22 Python
pandas创建DataFrame的7种方法小结
Jun 14 Python
Python修改DBF文件指定列
Dec 19 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 curl 获取响应的状态码的方法
2014/01/13 PHP
php数组合并的二种方法
2014/03/21 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
javascript 文档的编码问题解决
2009/03/01 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Python中的CURL PycURL使用例子
2014/06/01 Python
python之Socket网络编程详解
2016/09/29 Python
python实现批量修改文件名代码
2017/09/10 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
python命令行工具Click快速掌握
2019/07/04 Python
Python assert关键字原理及实例解析
2019/12/13 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
手机业务员岗位职责
2013/12/13 职场文书
工作决心书
2014/03/11 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
安全隐患整改报告
2014/11/06 职场文书
教师年终个人总结
2015/02/11 职场文书
2015年检验科工作总结
2015/04/27 职场文书
婚育证明格式
2015/06/17 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
用Python创建简易网站图文教程
2021/06/11 Python