类拼字游戏截图中15x15棋盘及玩家手牌区域的类方形方块检测优化请求
类拼字游戏截图中15x15棋盘及玩家手牌区域的类方形方块检测优化请求
我现在在做类拼字游戏截图的方块检测,目标是识别15x15棋盘区域和玩家手牌里那些略带椭圆的方块,但目前的代码漏检了不少空方块,还有大部分带字母的方块,想求优化思路。
先放原始的游戏截图:
这是我目前使用的检测代码:
import cv2 import numpy as np image = cv2.imread(r'image_path') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) blurred = cv2.GaussianBlur(gray, (5, 5), 0) edges = cv2.Canny(blurred, 50, 150) contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) output_image = image.copy() for contour in contours: epsilon = 0.02 * cv2.arcLength(contour, True) approx = cv2.approxPolyDP(contour, epsilon, True) if len(approx) == 4 and cv2.isContourConvex(approx): (x, y, w, h) = cv2.boundingRect(approx) aspect_ratio = float(w) / h if aspect_ratio > 0.8 and aspect_ratio < 1.2: cv2.drawContours(output_image, [approx], -1, (0, 255, 0), 3) cv2.imshow('Detected Squares', output_image) cv2.imwrite('processed_cleaned_image.png', output_image) cv2.waitKey(0) cv2.destroyAllWindows()
这是代码运行后的输出截图,能看到手牌里的两个字母方块没被检测出来,棋盘上的大部分方块也都漏检了:
补充几个已知的固定约束,或许能帮到优化:
- 棋盘区域固定是15×15的方块布局
- 玩家手牌区域一般是7个方块,只有游戏最后几轮数量会有变化
我之前还试过另一个方块检测的方案,但结果反而比现在的还差,所以现在卡在这里了,求大家给点改进建议。
备注:内容来源于stack exchange,提问作者eren
相关产品推荐
相关产品推荐

