隨著人們對(duì)游戲娛樂需求的不斷增長,消消樂這款游戲已經(jīng)成為了許多人休閑娛樂的首選。而想要在消消樂游戲中快速獲得高分,就需要使用一些輔助工具。本文將介紹如何使用Python語言實(shí)現(xiàn)消消樂輔助功能。
#導(dǎo)入所需庫 import cv2 import numpy as np #定義截取連接塊的函數(shù) def get_piece(img, row, col): w, h = img.shape[1] // col, img.shape[0] // row p_list = [] for i in range(row): for j in range(col): p_list.append(img[i * h:(i + 1) * h, j * w:(j + 1) * w]) return p_list #定義匹配圖片的函數(shù) def match_img(big_img, small_img): result = cv2.matchTemplate(big_img, small_img, cv2.TM_CCOEFF_NORMED) y, x = np.unravel_index(result.argmax(), result.shape) return x, y #定義主函數(shù) if __name__ == "__main__": #讀取消消樂游戲界面截圖 img = cv2.imread("screen_shot.png") #將截圖轉(zhuǎn)換為灰度圖 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #使用閾值處理二值化 _, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) #使用開運(yùn)算去除噪聲 kernel = np.ones((5, 5), np.uint8) opened = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel) #使用連通組件分析尋找消消樂塊 _, labels, stats, centroids = cv2.connectedComponentsWithStats(opened, 8, cv2.CV_32S) for i in range(1, stats.shape[0]): if stats[i, cv2.CC_STAT_AREA] >800: x, y, w, h = stats[i, cv2.CC_STAT_LEFT], stats[i, cv2.CC_STAT_TOP], stats[i, cv2.CC_STAT_WIDTH], stats[i, cv2.CC_STAT_HEIGHT] #截取連接塊并保存 piece = gray[y:y + h, x:x + w] cv2.imwrite(str(i) + ".png", piece) #讀取所得連接塊并進(jìn)行匹配 pieces = get_piece(img, 9, 7) for i in range(len(pieces)): for j in range(i + 1, len(pieces)): x1, y1 = match_img(pieces[i], pieces[j]) x2, y2 = match_img(pieces[j], pieces[i]) if x1 != -1 and x2 != -1: print(i, j, x1, y1, x2, y2)
上述代碼實(shí)現(xiàn)了對(duì)消消樂截圖的處理和連接塊的匹配。首先,我們通過二值化、開運(yùn)算等處理方法將截圖處理成二值圖,并使用連通組件分析提取連接塊。接著,我們根據(jù)連接塊的位置坐標(biāo)截取的連接塊,并使用matchTemplate函數(shù)匹配兩個(gè)塊之間的相似度。最終,我們將匹配到的塊的信息輸出。
運(yùn)行該程序時(shí),只需將消消樂游戲的截圖命名為screen_shot.png并放置于程序所在目錄下即可。使用這個(gè)程序,我們可以更加輕松高效地獲取消消樂游戲中的高得分塊。