mahjong_vision / debug_coordinates.py
krmin's picture
Add model download script and local model files for Mahjong Soul Vision
401cf69
"""
座標デバッグ用スクリプト
雀魂のウィンドウから手牌領域をキャプチャして確認
"""
import pygetwindow as gw
from PIL import ImageGrab
import numpy as np
import cv2
# ウィンドウを取得
window_title = "雀魂"
try:
window = gw.getWindowsWithTitle(window_title)[0]
print(f"✓ ウィンドウ検出: {window.title}")
print(f" 位置: ({window.left}, {window.top})")
print(f" サイズ: {window.width}x{window.height}")
except IndexError:
print(f"✗ '{window_title}' が見つかりません")
exit(1)
# スクリーンショット取得
screenshot = ImageGrab.grab(bbox=(window.left, window.top, window.right, window.bottom), all_screens=True)
frame = np.array(screenshot)
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
# 手牌座標(live_feed.pyと同じ)
PLAYER_HAND_X = 105
PLAYER_HAND_Y = 759
PLAYER_HAND_W = 627
PLAYER_HAND_H = 84
# 座標が画面内か確認
if PLAYER_HAND_Y + PLAYER_HAND_H > frame.shape[0]:
print(f"\n⚠ 警告: 手牌のY座標が画面外です")
print(f" 画面の高さ: {frame.shape[0]}")
print(f" 手牌の範囲: Y {PLAYER_HAND_Y} - {PLAYER_HAND_Y + PLAYER_HAND_H}")
# 座標を修正
PLAYER_HAND_Y = frame.shape[0] - PLAYER_HAND_H - 10
print(f" 修正後のY座標: {PLAYER_HAND_Y}")
# 手牌領域を抽出
hand_region = frame[PLAYER_HAND_Y:PLAYER_HAND_Y+PLAYER_HAND_H,
PLAYER_HAND_X:PLAYER_HAND_X+PLAYER_HAND_W]
# 矩形を描画
debug_frame = frame.copy()
cv2.rectangle(debug_frame,
(PLAYER_HAND_X, PLAYER_HAND_Y),
(PLAYER_HAND_X + PLAYER_HAND_W, PLAYER_HAND_Y + PLAYER_HAND_H),
(0, 255, 0), 3)
# 保存
cv2.imwrite("debug_full_screen.png", debug_frame)
cv2.imwrite("debug_hand_region.png", hand_region)
print(f"\n保存完了:")
print(f" debug_full_screen.png - 全画面(緑の矩形が手牌領域)")
print(f" debug_hand_region.png - 手牌領域のみ")
print(f"\n手牌領域:")
print(f" X: {PLAYER_HAND_X}")
print(f" Y: {PLAYER_HAND_Y}")
print(f" 幅: {PLAYER_HAND_W}")
print(f" 高さ: {PLAYER_HAND_H}")
print(f" サイズ: {hand_region.shape}")