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ì)算,畫(huà)出圓心和質(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) #畫(huà)出圓心 cv2.circle(frame, center, 3, (0, 0, 255), -1) cv2.circle(hsv, center, int(radius+10), (255, 255, 255), 3) #畫(huà)出圓心 cv2.circle(hsv, center, 3, (0, 0, 255), -1) cv2.circle(mask_blue, center, int(radius+10), (255, 255, 255), 3) #畫(huà)出圓心 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),其最大的部分恰好就在底盤(pán),圓心位置正是我們需要的。
動(dòng)態(tài)實(shí)時(shí)識(shí)別
我們給出動(dòng)態(tài)圖,可以看一下動(dòng)態(tài)實(shí)時(shí)識(shí)別的效果。
評(píng)價(jià)
采用顏色來(lái)對(duì)跳跳小人的底盤(pán)位置進(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實(shí)現(xiàn)批量合并圖片到word文檔
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量合并指定文件夾中的所有圖片并插入到Word文檔中并保存,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10OpenCV特征提取與檢測(cè)之Shi-Tomasi角點(diǎn)檢測(cè)器
在角點(diǎn)檢測(cè)的世界里哈瑞斯無(wú)疑是最重要的方法之一,但Shi-Tomasi作為改進(jìn)的算法也有很大應(yīng)用場(chǎng)景,尤其是動(dòng)態(tài)跟蹤用的還比較多,這篇文章主要給大家介紹了關(guān)于OpenCV特征提取與檢測(cè)之Shi-Tomasi角點(diǎn)檢測(cè)器的相關(guān)資料,需要的朋友可以參考下2021-08-08Python Pygame實(shí)戰(zhàn)之打地鼠小游戲
Pygame庫(kù)是專(zhuān)門(mén)為了幫助做出的游戲和其他多媒體應(yīng)用Python編程語(yǔ)言的一個(gè)開(kāi)放源代碼模塊。本文將利用Pygame模塊制作一個(gè)打地鼠的小游戲,快跟隨小編一起學(xué)習(xí)一下吧2022-01-01Python 實(shí)現(xiàn)自動(dòng)完成A4標(biāo)簽排版打印功能
這篇文章主要介紹了Python 實(shí)現(xiàn)自動(dòng)完成A4標(biāo)簽排版打印功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04python數(shù)據(jù)分析之聚類(lèi)分析(cluster analysis)
聚類(lèi)分析本身不是一個(gè)特定的算法,而是要解決的一般任務(wù)。它可以通過(guò)各種算法來(lái)實(shí)現(xiàn),這些算法在理解群集的構(gòu)成以及如何有效地找到它們方面存在顯著差異。這篇文章主要介紹了python數(shù)據(jù)分析之聚類(lèi)分析(cluster analysis),需要的朋友可以參考下2021-11-11Python坐標(biāo)軸操作及設(shè)置代碼實(shí)例
這篇文章主要介紹了Python坐標(biāo)軸操作及設(shè)置代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06