溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python微信跳一跳系列之如何實(shí)現(xiàn)棋子定位顏色識別

發(fā)布時間:2021-08-03 12:45:55 來源:億速云 閱讀:128 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)python微信跳一跳系列之如何實(shí)現(xiàn)棋子定位顏色識別,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

python微信跳一跳,前言

這是python玩跳一跳系列博文中一篇,主要內(nèi)容是用顏色識別的方法來進(jìn)行跳跳小人的定位。

顏色識別

通過觀察,我們可以發(fā)現(xiàn),盡管背景和棋子在不停的變化,但跳跳小人的形狀和顏色基本保持不變,對于形狀,我們在上一篇博文中已經(jīng)采用模板匹配的方法來進(jìn)行識別定位,效果非常好。這一篇博文就來對顏色識別進(jìn)行驗(yàn)證。

基本思路

用HSV顏色空間對輸入的圖片進(jìn)行處理,用某種指定的顏色進(jìn)行蒙版mask處理進(jìn)而得到二值化的黑白圖像,膨脹和腐蝕后去除噪點(diǎn),對輪廓區(qū)域進(jìn)行計(jì)算,畫出圓心和質(zhì)心位置,并實(shí)現(xiàn)動態(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)圖片識別效果

python微信跳一跳系列之如何實(shí)現(xiàn)棋子定位顏色識別

左邊是原始圖片,中間是蒙版后的二值圖,右邊就是HSV圖像,識別效果還是不錯的。
可以看到,目前選定的顏色基本可以將小人的輪廓全部篩選出來,其最大的部分恰好就在底盤,圓心位置正是我們需要的。

動態(tài)實(shí)時識別

我們給出動態(tài)圖,可以看一下動態(tài)實(shí)時識別的效果。

python微信跳一跳系列之如何實(shí)現(xiàn)棋子定位顏色識別

評價

采用顏色來對跳跳小人的底盤位置進(jìn)行識別和定位效果不錯,而且這種方法和手機(jī)的像素及屏幕大小無關(guān),真正實(shí)現(xiàn)了各平臺通用。

關(guān)于“python微信跳一跳系列之如何實(shí)現(xiàn)棋子定位顏色識別”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI