File size: 2,084 Bytes
fecfd49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import re

# Definir nuestras funciones auxiliares para verificación de imágenes
helper_functions = '''
    # Función auxiliar para verificar si una imagen es válida antes de redimensionar
    def is_valid_image(img):
        if img is None:
            return False
        try:
            # Verificar que la imagen tenga dimensiones válidas y datos
            return img.size > 0 and len(img.shape) >= 2 and img.shape[0] > 0 and img.shape[1] > 0
        except:
            return False
    
    # Función auxiliar para redimensionar de forma segura
    def safe_resize(img, target_size):
        if is_valid_image(img):
            try:
                return cv2.resize(img, target_size)
            except Exception as e:
                print(f"Error al redimensionar: {str(e)}")
                return None
        return None
'''

# Modificar código para usar funciones seguras
with open('streamlit_app.py', 'r', encoding='utf-8') as file:
    content = file.read()

# Buscar la definición de la función stop_feature_camera
if 'def stop_feature_camera' in content:
    # Añadir nuestras funciones auxiliares después de esta función
    content = content.replace(
        'def stop_feature_camera():',
        'def stop_feature_camera():' + helper_functions
    )

# Buscar y reemplazar los usos de cv2.resize
content = content.replace(
    'thumbnail = cv2.resize(info[\'image\'], (w//4, h//4))',
    'thumbnail = safe_resize(info[\'image\'], (w//4, h//4))\n                if thumbnail is not None'
)

# También reemplazar otros posibles usos de resize en el procesamiento de video
content = content.replace(
    'small_img = cv2.resize(img, (int(w * scale_factor), int(h * scale_factor)))',
    'small_img = safe_resize(img, (int(w * scale_factor), int(h * scale_factor)))\n            if small_img is None:\n                return frame'
)

# Escribir el contenido modificado al archivo
with open('streamlit_app.py', 'w', encoding='utf-8') as file:
    file.write(content)

print("Archivo actualizado correctamente con verificaciones de imágenes seguras.")