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 相关文章推荐
django 自定义用户user模型的三种方法
Nov 18 Python
python字符类型的一些方法小结
May 16 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
Apr 15 Python
Python模拟随机游走图形效果示例
Feb 06 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
python解析json串与正则匹配对比方法
Dec 20 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
如何利用Python 进行边缘检测
Oct 14 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 Python
python状态机transitions库详解
Jun 02 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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
smtp邮件发送一例
2006/10/09 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
js实现左右轮播图
2020/01/09 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
linux下python使用sendmail发送邮件
2018/05/22 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
Flask配置Cors跨域的实现
2019/07/12 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
放弃继承权公证书
2015/01/23 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
新学期家长寄语2016
2015/12/03 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
配置Kubernetes外网访问集群
2022/03/31 Servers