feature: Add GNU/Linux and MacOS support
This commit is contained in:
23
src/main.py
23
src/main.py
@@ -14,6 +14,8 @@ import time
|
|||||||
import math
|
import math
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import json
|
import json
|
||||||
|
import platform
|
||||||
|
import sys
|
||||||
|
|
||||||
# ===========================
|
# ===========================
|
||||||
# CONFIGURACIÓN
|
# CONFIGURACIÓN
|
||||||
@@ -45,6 +47,15 @@ BG_COLOR = "#282c34"
|
|||||||
TEXT_COLOR = "#abb2bf"
|
TEXT_COLOR = "#abb2bf"
|
||||||
ACCENT_COLOR = "#61afef"
|
ACCENT_COLOR = "#61afef"
|
||||||
|
|
||||||
|
# Cross-platform video backend
|
||||||
|
V_BACKEND = cv2.CAP_ANY
|
||||||
|
if platform.system() == "Windows":
|
||||||
|
V_BACKEND = cv2.CAP_DSHOW
|
||||||
|
elif platform.system() == "Darwin": # macOS
|
||||||
|
V_BACKEND = cv2.CAP_AVFOUNDATION
|
||||||
|
elif platform.system() == "Linux":
|
||||||
|
V_BACKEND = cv2.CAP_V4L2
|
||||||
|
|
||||||
# ===========================
|
# ===========================
|
||||||
# CLASES DE UTILIDAD
|
# CLASES DE UTILIDAD
|
||||||
# ===========================
|
# ===========================
|
||||||
@@ -550,12 +561,12 @@ class App:
|
|||||||
self.btn_graph = tk.Button(self.controls_frame, text="Generar Gráfico", command=generate_graph, bg="#98c379", fg="black", font=("Helvetica", 10))
|
self.btn_graph = tk.Button(self.controls_frame, text="Generar Gráfico", command=generate_graph, bg="#98c379", fg="black", font=("Helvetica", 10))
|
||||||
self.btn_graph.pack(side="left", padx=5)
|
self.btn_graph.pack(side="left", padx=5)
|
||||||
|
|
||||||
self.log_text = scrolledtext.ScrolledText(window, height=8, bg="#21252b", fg="white", font=("Consolas", 9))
|
self.log_text = scrolledtext.ScrolledText(window, height=8, bg="#21252b", fg="white", font=("Courier", 9) if platform.system() != "Windows" else ("Consolas", 9))
|
||||||
self.log_text.pack(fill="x", padx=10, pady=5)
|
self.log_text.pack(fill="x", padx=10, pady=5)
|
||||||
|
|
||||||
# Logic
|
# Logic
|
||||||
# Usamos CAP_DSHOW en Windows para compatibilidad "Universal" (Mejor acceso a ajustes)
|
# Usamos el backend apropiado según el sistema operativo
|
||||||
self.cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
|
self.cap = cv2.VideoCapture(0, V_BACKEND)
|
||||||
# Configurar 1080p por defecto
|
# Configurar 1080p por defecto
|
||||||
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
|
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
|
||||||
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
|
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
|
||||||
@@ -830,8 +841,8 @@ class App:
|
|||||||
if self.cap.isOpened():
|
if self.cap.isOpened():
|
||||||
self.cap.release()
|
self.cap.release()
|
||||||
|
|
||||||
# Reabrir con DirectShow para mantener compatibilidad universal
|
# Reabrir con el backend apropiado
|
||||||
self.cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
|
self.cap = cv2.VideoCapture(0, V_BACKEND)
|
||||||
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
|
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
|
||||||
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
|
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
|
||||||
|
|
||||||
@@ -1012,7 +1023,7 @@ class App:
|
|||||||
try:
|
try:
|
||||||
if self.cap.isOpened():
|
if self.cap.isOpened():
|
||||||
self.cap.release()
|
self.cap.release()
|
||||||
self.cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
|
self.cap = cv2.VideoCapture(0, V_BACKEND)
|
||||||
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
|
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
|
||||||
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
|
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
|
||||||
except:
|
except:
|
||||||
|
|||||||
Reference in New Issue
Block a user