|
|
""" |
|
|
座標デバッグ用スクリプト |
|
|
雀魂のウィンドウから手牌領域をキャプチャして確認 |
|
|
""" |
|
|
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) |
|
|
|
|
|
|
|
|
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}") |
|
|
|