/
volkovss
/
eye_tracker
Обзор
Документация
Войти
/
volkovss
/
eye_tracker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
tracker/metadata.py
84 строки
2 KB
volkovss
Initial commit: Eye Tracker v1.0
03 июн 2026, 13:18
03 июн 2026, 13:18
f9d57a2
Код
Авторство
О чём код?
import platform import sys import os import subprocess import numpy as np import cv2 import psutil from datetime import datetime from typing import Dict, Any try: import tkinter as tk _TK = True except ImportError: _TK = False def collect_hardware() -> Dict[str, Any]: gpu = "N/A" try: r = subprocess.run( ["nvidia-smi", "--query-gpu=name", "--format=csv,noheader"], capture_output=True, text=True, timeout=3 ) if r.returncode == 0: gpu = r.stdout.strip() except Exception: pass return { "cpu_model": platform.processor() or "Unknown", "cpu_cores": psutil.cpu_count(logical=True), "ram_mb": round(psutil.virtual_memory().total / 1024 / 1024), "gpu_info": gpu, } def collect_software() -> Dict[str, Any]: return { "os_name": platform.system(), "os_version": platform.version(), "python_version": sys.version.split()[0], "opencv_version": cv2.__version__, "app_version": "1.0.0", } def collect_screen() -> Dict[str, Any]: if _TK: try: root = tk.Tk() w = root.winfo_screenwidth() h = root.winfo_screenheight() dpi = root.winfo_fpixels("1i") root.destroy() return {"screen_width_px": w, "screen_height_px": h, "screen_dpi": dpi} except Exception: pass return {"screen_width_px": 1920, "screen_height_px": 1080, "screen_dpi": 96.0} def estimate_ambient(frame) -> Dict[str, Any]: """Оценка освещённости по яркости кадра с камеры.""" if frame is None: return {"ambient_lux_estimate": None, "lighting_condition": "unknown"} gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) brightness = float(np.mean(gray)) lux = round(brightness * 4, 1) # грубая аппроксимация if brightness < 30: condition = "dark" elif brightness < 80: condition = "dim" elif brightness < 160:condition = "normal" else: condition = "bright" return {"ambient_lux_estimate": lux, "lighting_condition": condition} def collect_all(frame=None) -> Dict[str, Any]: return { "hardware": collect_hardware(), "software": collect_software(), "environment": {**collect_screen(), **estimate_ambient(frame)}, }