国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python微信跳一跳系列之棋子定位顏色識別

2020-02-22 23:20:07
字體:
來源:轉載
供稿:網友

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, 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()

靜態圖片識別效果

這里寫圖片描述 

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

動態實時識別

我們給出動態圖,可以看一下動態實時識別的效果。
這里寫圖片描述 

評價

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂伦春自治旗| 河北省| 潞西市| 德令哈市| 康保县| 沾化县| 荃湾区| 永德县| 阜宁县| 宜黄县| 泉州市| 新营市| 徐汇区| 手机| 灌云县| 清水河县| 淄博市| 中西区| 武鸣县| 偏关县| 南部县| 桦甸市| 河东区| 余江县| 垣曲县| 信宜市| 白河县| 道真| 九寨沟县| 鲜城| 余庆县| 铜梁县| 永春县| 互助| 资溪县| 遵义县| 仲巴县| 房山区| 乌苏市| 乡城县| 曲水县|