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 高级专用类方法的实例详解
Sep 11 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
Python3匿名函数用法示例
Jul 25 Python
python学生信息管理系统(初级版)
Oct 17 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
python仿evething的文件搜索器实例代码
May 13 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
python 基于opencv实现高斯平滑
Dec 18 Python
Python Django搭建文件下载服务器的实现
May 10 Python
pytorch常用数据类型所占字节数对照表一览
May 17 Python
Python图片检索之以图搜图
May 31 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
PHPMailer邮件发送的实现代码
2013/05/04 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
python实现逻辑回归的方法示例
2017/05/02 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
小班评语大全
2014/05/04 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫