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

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

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

python微信跳一跳,前言

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

颜色识别

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

基本思路

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

python3.6代码

import cv2 import numpy as np import timelower_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,255),3) #画出圆心  cv2.circle(frame,3,-1) cv2.circle(hsv,(255,3) #画出圆心  cv2.circle(hsv,-1)  cv2.circle(mask_blue,3) #画出圆心  cv2.circle(mask_blue,-1) cv2.imshow('frame',frame)cv2.imshow('hsv',hsv)cv2.imshow('mask',mask_blue)if cv2.waitKey(0)==ord('q'): cv2.destroyAllwindows()

静态图片识别效果

 

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

动态实时识别

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

 

评价

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

预告

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

您可能感兴趣的文章:微信跳一跳游戏python脚本python实现微信跳一跳辅助工具步骤详解微信跳一跳python代码实现微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧微信跳一跳辅助python代码实现微信跳一跳自动运行python脚本微信跳一跳python辅助软件思路及图像识别源码解析微信跳一跳小游戏python脚本Python+OpenCV让电脑帮你玩微信跳一跳python微信跳一跳系列之自动计算跳一跳距离 总结

以上是内存溢出为你收集整理的python微信跳一跳系列之棋子定位颜色识别全部内容,希望文章能够帮你解决python微信跳一跳系列之棋子定位颜色识别所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1200564.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存