python微信跳一跳系列之棋子定位顏色識(shí)別
python微信跳一跳,前言
這是python玩跳一跳系列博文中一篇,主要內(nèi)容是用顏色識(shí)別的方法來(lái)進(jìn)行跳跳小人的定位。
顏色識(shí)別
通過(guò)觀察,我們可以發(fā)現(xiàn),盡管背景和棋子在不停的變化,但跳跳小人的形狀和顏色基本保持不變,對(duì)于形狀,我們?cè)谏弦黄┪闹幸呀?jīng)采用模板匹配的方法來(lái)進(jìn)行識(shí)別定位,效果非常好。這一篇博文就來(lái)對(duì)顏色識(shí)別進(jìn)行驗(yàn)證。
基本思路
用HSV顏色空間對(duì)輸入的圖片進(jìn)行處理,用某種指定的顏色進(jìn)行蒙版mask處理進(jìn)而得到二值化的黑白圖像,膨脹和腐蝕后去除噪點(diǎn),對(duì)輪廓區(qū)域進(jìn)行計(jì)算,畫出圓心和質(zhì)心位置,并實(shí)現(xiàn)動(dòng)態(tài)的跟蹤。
其基本的步驟如下:
設(shè)定需要的顏色閾值
讀入圖像
轉(zhuǎn)化為HSV圖像
采用顏色的蒙版進(jìn)行二值化處理得到黑白圖像
降噪和輪廓處理
繪出圓心
python3.6代碼
import cv2
import numpy as np
import time
lower_blue = np.array([115,75,75]) #設(shè)定藍(lán)色的閾值
upper_blue = np.array([130,255,125])
frame=cv2.imread('001.png')
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) #轉(zhuǎn)到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()
靜態(tài)圖片識(shí)別效果

左邊是原始圖片,中間是蒙版后的二值圖,右邊就是HSV圖像,識(shí)別效果還是不錯(cuò)的。
可以看到,目前選定的顏色基本可以將小人的輪廓全部篩選出來(lái),其最大的部分恰好就在底盤,圓心位置正是我們需要的。
動(dòng)態(tài)實(shí)時(shí)識(shí)別
我們給出動(dòng)態(tài)圖,可以看一下動(dòng)態(tài)實(shí)時(shí)識(shí)別的效果。

評(píng)價(jià)
采用顏色來(lái)對(duì)跳跳小人的底盤位置進(jìn)行識(shí)別和定位效果不錯(cuò),而且這種方法和手機(jī)的像素及屏幕大小無(wú)關(guān),真正實(shí)現(xiàn)了各平臺(tái)通用。
預(yù)告
在下一篇博文中,我會(huì)對(duì)github上wechat-jump所采用的顏色遍歷方法進(jìn)行驗(yàn)證,敬請(qǐng)期待。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python?OpenCV實(shí)現(xiàn)簡(jiǎn)單的顏色識(shí)別功能(對(duì)紅色和藍(lán)色識(shí)別并輸出)
- Python+OpenCV實(shí)現(xiàn)圖片及視頻中選定區(qū)域顏色識(shí)別
- Python+OpenCV實(shí)現(xiàn)基于顏色的目標(biāo)識(shí)別
- python+opencv實(shí)現(xiàn)文字顏色識(shí)別與標(biāo)定功能
- python實(shí)現(xiàn)簡(jiǎn)單顏色識(shí)別程序
- 50行Python代碼實(shí)現(xiàn)視頻中物體顏色識(shí)別和跟蹤(必須以紅色為例)
- 淺談Python3識(shí)別判斷圖片主要顏色并和顏色庫(kù)進(jìn)行對(duì)比的方法
- python識(shí)別圖片中指定顏色的圖案并保存為圖片
相關(guān)文章
Python中使用 Selenium 實(shí)現(xiàn)網(wǎng)頁(yè)截圖實(shí)例
這篇文章主要介紹了Python中使用 Selenium 實(shí)現(xiàn)網(wǎng)頁(yè)截圖實(shí)例,Selenium支持Java、C#、Ruby 以及 Python等語(yǔ)言,本文以Python語(yǔ)言為例,需要的朋友可以參考下2014-07-07
pytorch教程之網(wǎng)絡(luò)的構(gòu)建流程筆記
這篇文章主要介紹了pytorch教程中網(wǎng)絡(luò)的構(gòu)建流程,文中附含了詳細(xì)的示例代碼流程,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09
調(diào)用其他python腳本文件里面的類和方法過(guò)程解析
這篇文章主要介紹了調(diào)用其他python腳本文件里面的類和方法過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
python實(shí)現(xiàn)簡(jiǎn)單井字棋小游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單井字棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
python2利用wxpython生成投影界面工具的圖文詳解
這篇文章主要介紹了python2利用wxpython生成投影界面工具的圖文詳解,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
python字符串與url編碼的轉(zhuǎn)換實(shí)例
今天小編就為大家分享一篇python字符串與url編碼的轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05

