Mss в python для 3D приложения (программирование)
Помогите пожалуйста, хочу сделать скриншот из игры CSGO, через mss. Вот код:
import mss
import mss.tools
import keyboard
import numpy as np
# Параметры окна игры CSGO
GAME_WINDOW_RECT = {"top": 0, "left": 0, "width": 1920, "height": 1080}
# Создаем объект mss с параметром monitor, указывающим на окно игры CSGO
monitors = mss.windows ()
monitor = {"top": GAME_WINDOW_RECT["top"], "left": GAME_WINDOW_RECT["left"],
"width": GAME_WINDOW_RECT["width"], "height": GAME_WINDOW_RECT["height"]}
for window in monitors:
if window["top"] == monitor["top"] and window["left"] == monitor["left"]:
monitor = window
break
sct = mss.mss(monitor=monitor)
# Основной цикл программы
while True:
# Проверяем, была ли нажата клавиша "q"
if keyboard.is _pressed("q"):
# Создаем скриншот
sct_img = sct.grab(monitor)
# Преобразуем изображение в массив numpy и изменяем его размер
frame = np.array(sct_img)
frame = frame[:, :, :3] # Удаляем 4-й канал (альфа-канал)
frame = np.flip(frame, axis=0) # Переворачиваем изображение по вертикали
frame = np.rot90(frame) # Поворачиваем изображение на 90 градусов
frame = np.ascontiguousarray(frame) # Преобразуем массив в формат, поддерживаемый OpenCV
# Сохраняем скриншот в файл
mss.tools.to _png(sct_img.rgb, sct_img.size, output="csgo_screenshot.png")
выдает это:
Traceback (most recent call last):
File "D:\123\py\92.py", line 12, in <module>
monitors = windows.windows ()
^^^^^^^
NameError: name 'windows' is not defined
Честно говоря я только учусь по Gpt chat, этот код он сделал, но выдает вот это
я предполагаю, что это для старой версии было или типо того
Ошибка "NameError: name 'windows' is not defined" означает, что в коде использована неопределенная переменная "windows". Вместо этого используется модуль mss для получения информации о мониторах.
Вместо этого кода:
```
monitors = windows.windows ()
monitor = {"top": GAME_WINDOW_RECT["top"], "left": GAME_WINDOW_RECT["left"], "width": GAME_WINDOW_RECT["width"], "height": GAME_WINDOW_RECT["height"]}
for window in monitors:
if window["top"] == monitor["top"] and window["left"] == monitor["left"]:
monitor = window
break
sct = mss.mss(monitor=monitor)
```
Используйте следующий код, который получает информацию о мониторах через модуль mss и передает ее непосредственно в mss для создания скриншота:
```
with mss.mss() as sct:
monitor = {"top": GAME_WINDOW_RECT["top"], "left": GAME_WINDOW_RECT["left"], "width": GAME_WINDOW_RECT["width"], "height": GAME_WINDOW_RECT["height"]}
sct_img = sct.grab(monitor)
# Остальной код остается без изменений
```
Обратите внимание, что данный код не может сделать скриншот из CSGO, так как строка "sct.grab(monitor)" захватывает только изображение с монитора, а не из игры. Для получения скриншотов из игры требуется использовать другие методы, например, "Memory Hacking" или "DirectX Hooking", что может нарушать правила игры и привести к блокировке аккаунта. Поэтому рекомендуется не использовать подобные методы без предварительного ознакомления с правилами игры и возможными последствиями.