PageSourceSearch

https://detector-glucosa.netlify.app/

html detector-glucosa.netlify.app collected 2026-10-03 10:38:36 UTC 7,034 bytes, 168 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5  <meta charset="UTF-8">
6<!-- This site is hosted on Netlify. Anyone can build and deploy a site
7     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=839df43b-f7fd-453c-97cf-d72ec3e606e2
8     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
9  <meta name="viewport" content="width=device-width, initial-scale=1.0">
10  <title>Deteccion de Glucosa</title>
11  <link rel="shortcut icon" href="./assets/logo.jpg" />
12  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
13    integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
14  <link rel="stylesheet" href="./style.css">
15  <link
16    href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
17    rel="stylesheet">
18</head>
19
20<body>
21  <header>
22    <nav class="navbar navbar-expand-lg bg-body-tertiary fixed-top">
23      <div class="container-fluid">
24        <h1 class="titulo navbar-brand mb-0 h1" href="./index.html">Glucose Levels</h1>
25        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
26          aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
27          <span class="navbar-toggler-icon"></span>
28        </button>
29        <div class="collapse navbar-collapse" id="navbarNav">
30          <ul class="navbar-nav">
31            <li class="nav-item">
32              <a aria-current='page' class='nav-link active' href='/'>Glucose Determination</a>
33            </li>
34            <li class="nav-item">
35              <a class='nav-link' href='/pages/colorimetria'>Color Guide</a>
36            </li>
37            <li class="nav-item">
38              <a class='nav-link d-none' href='/pages/registro' id='aparece'>Register</a>
39            </li>
40            <li class="nav-item">
41              <a class='nav-link  d-none' href='/pages/login' id='aparece1'>Log in</a>
42            </li>
43            <li class="nav-item">
44              <a class='nav-link' href='/pages/login' id='desaparece' onclick='logout()'>Log out</a>
45            </li>
46          </ul>
47        </div>
48      </div>
49    </nav>
50  </header>
51  <!-- <input type="file" class="fileInput" id="fileInput" accept="image/*">
52  <canvas class="outputCanvas" id="outputCanvas" width="400" height="300"></canvas>
53  <div class="colorIntensity" id="colorIntensity"></div> -->
54  <meta name="viewport" content="width=device-width,initial-scale=1" />
55  <div class="row">
56    <div id="app" class="container">
57      <div class="hijo">
58        <canvas id="outputCanvas" ></canvas>
59        <div id="colorIntensity" class="d-none"></div>
60        <div class="intensity-container">
61          <canvas id="intensityCanvas" width="200" height="200"></canvas>
62          <div id="statusText" class="intensity-container"></div>
63        </div>
64        <div class="file-select">
65          <label for="fileInput" id="boton-file" class="file-label">Measure Glucose</label>
66          <input type="file" name="src-file" id="fileInput" accept="image/*" style="display: none;">
67          <button id="backButton" class="btn d-none">Back</button>
68          <button id="loginButton" class="btn d-none"><a class='link' href='/pages/login'>Log in</a></button>
69        </div>
70      </div>
71    </div>
72    <canvas id="glucoseChart" width="400" height="200"></canvas>
73  </div>
74  
74<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
74
75
76  <!-- 
76<script>
77    function onOpenCvReady() {
78      console.log('OpenCV.js loaded');
79      document.getElementById('fileInput').addEventListener('change', handleFileSelect, false);
80    }
81
82    function handleFileSelect(event) {
83      const file = event.target.files[0];
84      const reader = new FileReader();
85
86      reader.onload = function (event) {
87        const img = new Image();
88        img.onload = function () {
89          processImage(this);
90        };
91        img.src = event.target.result;
92      };
93
94      reader.readAsDataURL(file);
95    }
96
97    function processImage(image) {
98      const canvas = document.getElementById('outputCanvas');
99      const ctx = canvas.getContext('2d');
100      canvas.width = image.width;
101      canvas.height = image.height;
102      ctx.drawImage(image, 0, 0);
103
104      // Convertir la imagen a un objeto Mat de OpenCV.js
105      const src = cv.imread(canvas);
106
107      // Convertir la imagen a HSV
108      const hsv = new cv.Mat();
109      cv.cvtColor(src, hsv, cv.COLOR_RGBA2RGB);
110      cv.cvtColor(hsv, hsv, cv.COLOR_RGB2HSV);
111
112      // Definir el rango de color azul en HSV
113      const lowerBlue = new cv.Mat(hsv.rows, hsv.cols, hsv.type(), [90, 50, 50, 0]);//Hue(matriz, cant de componentes),Saturacion,Valor, transparencia
114      const upperBlue = new cv.Mat(hsv.rows, hsv.cols, hsv.type(), [130, 255, 255, 255]);//totalmente opaco 255 en traparencia
115      // Rango para colores verdes
116      const lowerGreen = new cv.Mat(hsv.rows, hsv.cols, hsv.type(), [35, 50, 50, 0]);
117      const upperGreen = new cv.Mat(hsv.rows, hsv.cols, hsv.type(), [85, 255, 255, 255]);
118      // Crear máscaras para verdes y azules
119      let maskGreen = new cv.Mat();
120      let maskBlue = new cv.Mat();
121      cv.inRange(hsv, lowerGreen, upperGreen, maskGreen);
122      cv.inRange(hsv, lowerBlue, upperBlue, maskBlue);
123
124      // Combinar las máscaras para obtener una única máscara que incluya ambos colores
125      let mask = new cv.Mat();
126      cv.bitwise_or(maskGreen, maskBlue, mask);
127      // Crear una máscara para aislar las áreas azules
128
129      // Aplicar umbralización
130      const dst = new cv.Mat();
131      cv.threshold(mask, dst, 100, 255, cv.THRESH_BINARY);
132
133      // Calcular la intensidad del color
134      const intensity = cv.countNonZero(dst);
135      document.getElementById("colorIntensity").textContent = "Intensidad del color:" + intensity;
136
137      // Mostrar el resultado en el canvas
138
139      cv.imshow(canvas, dst);
140
141      // Liberar memoria
142      src.delete();
143      hsv.delete();
144      lowerBlue.delete();
145      upperBlue.delete();
146      mask.delete();
147      dst.delete();
148    }
149  </script>
149 -->
150  
150<script src="./app.js"></script>
150
151  
151<script async src="https://docs.opencv.org/4.5.5/opencv.js" onload="onOpenCvReady()"></script>
151
152  
152<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"
153    integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
154    crossorigin="anonymous"></script>
154
155  
155<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"
156    integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy"
157    crossorigin="anonymous"></script>
157
158  <!-- <style>
159    #outputCanvas {
160      position: absolute;
161      z-index: -1;
162      width: 400px;
163      /*Este numero puede ser ajustado segun sea necesario*/
164    }
165  </style> -->
166</body>
167
168</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.