使用 Python 在 2 秒内评估国际象棋位置

本文介绍了一种使用Python截取并分析lichess.org上的国际象棋棋盘,通过OpenCV和Stockfish引擎实时评估棋局优势的方法。程序包括截图、棋盘定位、棋子识别和棋盘评估等步骤,最终给出棋局的评分和最佳走法。
摘要由CSDN通过智能技术生成

如何在两秒钟内评估国际象棋位置的指南

经常在 https://lichess.org/ 上观看大师们玩的国际象棋比赛。这些棋局和棋手的水平超出了我们的想象,如果想知道谁有优势。与其事后分析游戏,不如实时分析它们。

下面的 Python 程序针对 https://lichess.org/ 进行了优化。但是你可以为 https://www.chess.com/ 或任何国际象棋网站修改它。

它的工作原理是截取棋盘的屏幕截图,检测每个棋子在棋盘上的位置,使用 python Chess 库绘制棋盘,然后使用 Stockfish 引擎为给定位置提供评估和最佳移动。

第 1 步:导入所需的模块

使用 OpenCV (开源计算机视觉库)和 NumPy 库来截取棋盘,可视化棋盘方格,并比较图像之间的差异。

如果你不熟悉OpenCV,鼓励你了解有关它的更多信息。接下来,使用 PIL(Pillow)库来修改图像(例如,裁剪)。CompareImages 模块使用 OpenCV 来查找并突出显示两个图像之间的差异。

稍微修改 CodeDeepAI 的代码,可以查看:https://codedeepai.com/finding-difference-between-multiple-images-using-opencv-and-python/,你可以从这个 GitHub 页面下载模块:https://github.com/aaljaish/Lichess-Board-Evaluator

mss 库是一种快速简便的方法来获取监视器的屏幕截图并将图像保存为 PNG 文件。接下来,使用chess库,用于移动生成、验证和可视化。

最后,使用stockfish 引擎来评估国际象棋的位置并确定最佳走法。你可以从他们的网站下载 Stockfish 引擎:https://stockfishchess.org/download/

在 Windows 中为这个项目使用 Stockfish 14.1 (AVX2)。

import cv2  # OpenCV library 
import numpy as np
import time

from PIL import Image # Pillow library will be used to open and crop images
from CompareImages import compare_images  # This code compares and detects differences 
                                          # between images.
from mss import mss # will be used for grabbing screenshots
sct=mss() 

import chess #used for chess baord visualization, move generation, and move validation.
from stockfish import Stockfish # The Stockfish chess engine will be used to evaluate 
                                # a given position and identify the top moves.
stockfish = Stockfish(r"Enter Your Path Here//stockfish.exe")
第 2 步:确保正确捕获棋盘。

接下来,创建了一个函数来定位显示器上的棋盘。该函数接受三个输入:棋盘左上角的 X 和 Y 坐标以及棋盘上每个方格的宽度。

在显示器上,X 和 Y 坐标为像素(585、163),每个正方形的宽度为 90 像素(图 1)。你需要为你的显示器配置这些输入。

c9ba6f4d8ad2473346aa9c8de3eaffb9.png

图 1:lichess.org 上棋盘的方向。左上角位于我屏幕的像素 (585, 163) 处,棋盘内的每个正方形都是 90 像素宽。

当你运行“capture_board”功能时,它将打开一个窗口,根据输入参数显示监视器的实时视图。它还将绘制一个 8x8 网格。确保蓝色框与棋盘格紧密对齐(图 2)。

7f753acbdad251b6d5644ded40e427b9.png

左侧的图像可能会导致对棋位的评估不佳或根本不起作用。

相反,请确保蓝线与棋盘格对齐以准确捕获棋子(右图)。

def capture_board(y_coords=163,x_coords=585, box_widths=90):
    
    global y_coord, x_coord, box_width
    y_coord, x_coord, box_width = y_coords, x_coords, box_widths
    
    
    '''
    This functions grabs a screenshot of your monitor based on the specified parameters. 
    It then draws an 8x8 grid based on the specified box width parameter. Make sure that 
    each blue square aligns closely with the chessboard squares.
    
    x_coord: This x coordinate i
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值