{"id":74564,"date":"2024-04-15T09:36:16","date_gmt":"2024-04-15T07:36:16","guid":{"rendered":"https:\/\/kinqsta.com\/es\/?p=74564&#038;preview=true&#038;preview_id=74564"},"modified":"2024-04-18T09:47:42","modified_gmt":"2024-04-18T07:47:42","slug":"react-deteccion-de-objetos-app","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/","title":{"rendered":"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta"},"content":{"rendered":"<p>Como las c\u00e1maras han mejorado, la detecci\u00f3n de objetos en tiempo real se ha convertido en una funcionalidad cada vez m\u00e1s solicitada. Desde los coches aut\u00f3nomos y los sistemas de vigilancia inteligentes hasta las aplicaciones de realidad aumentada, esta tecnolog\u00eda se utiliza en muchas situaciones.<\/p>\n<p>La visi\u00f3n por ordenador, un nombre elegante para la tecnolog\u00eda que utiliza c\u00e1maras con ordenadores para realizar operaciones como las mencionadas anteriormente, es un campo vasto y complicado. Sin embargo, quiz\u00e1 no sepas que puedes iniciarte en la detecci\u00f3n de objetos en tiempo real muy f\u00e1cilmente desde la comodidad de tu navegador.<\/p>\n<p>Este art\u00edculo explica c\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando <a href=\"https:\/\/kinqsta.com\/es\/blog\/que-es-react-js\/\">React<\/a> y desplegar la aplicaci\u00f3n en Kinsta. La aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real aprovecha el feed de la webcam del usuario.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Requisitos previos<\/h2>\n<p>Aqu\u00ed tienes un desglose de las principales tecnolog\u00edas utilizadas en esta gu\u00eda:<\/p>\n<ul>\n<li><strong>React<\/strong>: React se utiliza para construir la interfaz de usuario (UI) de la aplicaci\u00f3n. React destaca en la <a href=\"https:\/\/kinqsta.com\/es\/blog\/react-renderizado-condicional\/\">renderizaci\u00f3n de contenido din\u00e1mico<\/a> y ser\u00e1 \u00fatil para presentar el feed de la webcam y los objetos detectados dentro del navegador.<\/li>\n<li><strong>TensorFlow.js<\/strong>: <a href=\"https:\/\/www.tensorflow.org\/js\" target=\"_blank\" rel=\"noopener noreferrer\">TensorFlow.js<\/a> es una biblioteca de JavaScript que lleva la potencia del aprendizaje autom\u00e1tico al navegador. Te permite cargar modelos preentrenados para la detecci\u00f3n de objetos y ejecutarlos directamente en el navegador, eliminando la necesidad de un complejo procesamiento en el servidor.<\/li>\n<li><strong>Coco SSD<\/strong>: La aplicaci\u00f3n utiliza un modelo de detecci\u00f3n de objetos preentrenado llamado <a href=\"https:\/\/github.com\/tensorflow\/tfjs-models\/tree\/master\/coco-ssd\">Coco SSD<\/a>, un modelo ligero capaz de reconocer una amplia gama de objetos cotidianos en tiempo real. Aunque Coco SSD es una herramienta potente, es importante tener en cuenta que se ha entrenado con un conjunto de datos general de objetos. Si tienes necesidades espec\u00edficas de detecci\u00f3n, puedes entrenar un modelo personalizado utilizando TensorFlow.js <a href=\"https:\/\/blog.tensorflow.org\/2021\/01\/custom-object-detection-in-browser.html\" target=\"_blank\" rel=\"noopener noreferrer\">siguiendo esta gu\u00eda<\/a>.<\/li>\n<\/ul>\n<h2>Configura un nuevo proyecto React<\/h2>\n<ol>\n<li>Crea un nuevo proyecto React. Para ello, ejecuta el siguiente comando:\n<pre><code class=\"language-bash\">npm create vite@latest kinsta-object-detection --template react<\/code><\/pre>\n<p>Esto crear\u00e1 un proyecto React b\u00e1sico para ti utilizando <a href=\"https:\/\/vitejs.dev\/\" target=\"_blank\" rel=\"noopener noreferrer\">vite<\/a>.<\/li>\n<li>A continuaci\u00f3n, instala las bibliotecas TensorFlow y Coco SSD ejecutando los siguientes comandos en el proyecto:\n<pre><code class=\"language-bash\">npm i @tensorflow-models\/coco-ssd @tensorflow\/tfjs<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>Ahora ya est\u00e1s preparado para empezar a desarrollar tu aplicaci\u00f3n.<\/p>\n<h2>Configurar la aplicaci\u00f3n<\/h2>\n<p>Antes de escribir el c\u00f3digo para la l\u00f3gica de detecci\u00f3n de objetos, vamos a entender qu\u00e9 se desarrolla en esta gu\u00eda. Este es el aspecto que tendr\u00eda la interfaz de usuario de la aplicaci\u00f3n:<\/p>\n<figure id=\"attachment_176989\" aria-describedby=\"caption-attachment-176989\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-176989 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2024\/04\/object-detection-app-ui-1024x502.png\" alt=\"Una captura de pantalla de la aplicaci\u00f3n completada con la cabecera y un bot\u00f3n para activar el acceso a la webcam.\" width=\"1024\" height=\"502\"><figcaption id=\"caption-attachment-176989\" class=\"wp-caption-text\">Dise\u00f1o de la interfaz de usuario de la aplicaci\u00f3n.<\/figcaption><\/figure>\n<p>Cuando un usuario pulsa el bot\u00f3n <strong>Iniciar Webcam<\/strong>, se le pide que conceda permiso a la aplicaci\u00f3n para acceder a la transmisi\u00f3n de la webcam. Una vez concedido el permiso, la aplicaci\u00f3n empieza a mostrar la imagen de la webcam y detecta los objetos presentes en ella. A continuaci\u00f3n, crea un recuadro para mostrar los objetos detectados en la imagen en directo y le a\u00f1ade una etiqueta.<\/p>\n<p>Para empezar, crea la interfaz de usuario de la aplicaci\u00f3n pegando el siguiente c\u00f3digo en el archivo <strong>App.jsx<\/strong>:<\/p>\n<pre><code class=\"language-jsx\">import ObjectDetection from '.\/ObjectDetection';\nfunction App() {\n  return (\n    &lt;div className=\"app\"&gt;\n      &lt;h1&gt;Image Object Detection&lt;\/h1&gt;\n        &lt;ObjectDetection \/&gt;\n    &lt;\/div&gt;\n  );\n}\n\nexport default App;<\/code><\/pre>\n<p>Este fragmento de c\u00f3digo especifica una cabecera para la p\u00e1gina e importa un componente personalizado llamado <code>ObjectDetection<\/code>. Este componente contiene la l\u00f3gica para capturar la se\u00f1al de la webcam y detectar objetos en tiempo real.<\/p>\n<p>Para crear este componente, crea un nuevo archivo llamado <strong>ObjectDetection.jsx<\/strong> en tu directorio <strong>src <\/strong>y pega en \u00e9l el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-jsx\">import { useEffect, useRef, useState } from 'react';\n\nconst ObjectDetection = () =&gt; {\n  const videoRef = useRef(null);\n  const [isWebcamStarted, setIsWebcamStarted] = useState(false)\n\n  const startWebcam = async () =&gt; {\n    \/\/ TODO\n  };\n\n  const stopWebcam = () =&gt; {\n     \/\/ TODO\n  };\n\n  return (\n    &lt;div className=\"object-detection\"&gt;\n      &lt;div className=\"buttons\"&gt;\n        &lt;button onClick={isWebcamStarted ? stopWebcam : startWebcam}&gt;{isWebcamStarted ? \"Stop\" : \"Start\"} Webcam&lt;\/button&gt;\n      &lt;\/div&gt;\n      &lt;div className=\"feed\"&gt;\n        {isWebcamStarted ? &lt;video ref={videoRef} autoPlay muted \/&gt; : &lt;div \/&gt;}\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  );\n};\n\nexport default ObjectDetection;<\/code><\/pre>\n<p>El c\u00f3digo anterior define una estructura <a href=\"https:\/\/kinqsta.com\/es\/blog\/que-es-el-html\/\">HTML<\/a> con un bot\u00f3n para iniciar y detener la transmisi\u00f3n de la webcam y un elemento <code>&lt;video&gt;<\/code> que se utilizar\u00e1 para mostrar al usuario su transmisi\u00f3n de la webcam una vez que est\u00e9 activa. Se utiliza un contenedor de estado <code>isWebcamStarted<\/code> para almacenar el estado de la transmisi\u00f3n de la webcam. Dos funciones, <code>startWebcam<\/code> y <code>stopWebcam<\/code>, se utilizan para iniciar y detener la transmisi\u00f3n de la webcam. Vamos a definirlas:<\/p>\n<p>Este es el c\u00f3digo de la funci\u00f3n <code>startWebcam<\/code>:<\/p>\n<pre><code class=\"language-jsx\">const startWebcam = async () =&gt; {\n    try {\n      setIsWebcamStarted(true)\n      const stream = await navigator.mediaDevices.getUserMedia({ video: true });\n\n      if (videoRef.current) {\n        videoRef.current.srcObject = stream;\n      }\n    } catch (error) {\n      setIsWebcamStarted(false)\n      console.error('Error accessing webcam:', error);\n    }\n  };<\/code><\/pre>\n<p>Esta funci\u00f3n se encarga de solicitar al usuario que conceda el acceso a la webcam, y una vez concedido el permiso, configura el <code>&lt;video&gt;<\/code> para mostrar la transmisi\u00f3n de la webcam en directo al usuario.<\/p>\n<p>Si el c\u00f3digo no consigue acceder a la se\u00f1al de la webcam (posiblemente por falta de webcam en el dispositivo actual o porque se deniega el permiso al usuario), la funci\u00f3n imprimir\u00e1 un mensaje en la consola. Puedes utilizar un bloque de error para mostrar al usuario el motivo del fallo.<\/p>\n<p>A continuaci\u00f3n, sustituye la funci\u00f3n <code>stopWebcam<\/code> por el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-jsx\">const stopWebcam = () =&gt; {\n    const video = videoRef.current;\n\n    if (video) {\n      const stream = video.srcObject;\n      const tracks = stream.getTracks();\n\n      tracks.forEach((track) =&gt; {\n        track.stop();\n      });\n\n      video.srcObject = null;\n      setPredictions([])\n      setIsWebcamStarted(false)\n    }\n  };<\/code><\/pre>\n<p>Este c\u00f3digo comprueba las pistas de la transmisi\u00f3n de v\u00eddeo en ejecuci\u00f3n a las que accede el objeto <code>&lt;video&gt;<\/code> y detiene cada una de ellas. Por \u00faltimo, establece el estado <code>isWebcamStarted<\/code> en <code>false<\/code>.<\/p>\n<p>En este punto, prueba a ejecutar la aplicaci\u00f3n para comprobar si puedes acceder a la transmisi\u00f3n de la webcam y verla.<\/p>\n<p>Aseg\u00farate de pegar el siguiente c\u00f3digo en el archivo <strong>index.css<\/strong> para comprobar que la app tiene el mismo aspecto que la vista previa que has visto antes:<\/p>\n<pre><code class=\"language-css\">#root {\n  font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;\n  line-height: 1.5;\n  font-weight: 400;\n  color-scheme: light dark;\n  color: rgba(255, 255, 255, 0.87);\n  background-color: #242424;\n  min-width: 100vw;\n  min-height: 100vh;\n  font-synthesis: none;\n  text-rendering: optimizeLegibility;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\na {\n  font-weight: 500;\n  color: #646cff;\n  text-decoration: inherit;\n}\n\na:hover {\n  color: #535bf2;\n}\n\nbody {\n  margin: 0;\n  display: flex;\n  place-items: center;\n  min-width: 100vw;\n  min-height: 100vh;\n}\n\nh1 {\n  font-size: 3.2em;\n  line-height: 1.1;\n}\n\nbutton {\n  border-radius: 8px;\n  border: 1px solid transparent;\n  padding: 0.6em 1.2em;\n  font-size: 1em;\n  font-weight: 500;\n  font-family: inherit;\n  background-color: #1a1a1a;\n  cursor: pointer;\n  transition: border-color 0.25s;\n}\n\nbutton:hover {\n  border-color: #646cff;\n}\n\nbutton:focus,\n\nbutton:focus-visible {\n  outline: 4px auto -webkit-focus-ring-color;\n}\n\n@media (prefers-color-scheme: light) {\n  :root {\n    color: #213547;\n    background-color: #ffffff;\n  }\n\n  a:hover {\n    color: #747bff;\n  }\n\n  button {\n    background-color: #f9f9f9;\n  }\n}\n\n.app {\n  width: 100%;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-direction: column;\n}\n\n.object-detection {\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n\n  .buttons {\n    width: 100%;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex-direction: row;\n\n    button {\n      margin: 2px;\n    }\n  }\n\n  div {\n    margin: 4px;\n  }\n}<\/code><\/pre>\n<p>Adem\u00e1s, elimina el archivo <strong>App.css<\/strong> para no estropear los estilos de los componentes. Ahora ya puedes escribir la l\u00f3gica para integrar la detecci\u00f3n de objetos en tiempo real en tu aplicaci\u00f3n.<\/p>\n<h2>Configurar la detecci\u00f3n de objetos en tiempo real<\/h2>\n<ol>\n<li>Comienza a\u00f1adiendo las importaciones para Tensorflow y Coco SSD en la parte superior de <strong>ObjectDetection.jsx<\/strong>:\n<pre><code class=\"language-jsx\">import * as cocoSsd from '@tensorflow-models\/coco-ssd';\n\nimport '@tensorflow\/tfjs';<\/code><\/pre>\n<\/li>\n<li>A continuaci\u00f3n, crea un estado en el componente <code>ObjectDetection<\/code> para almacenar el array de predicciones generado por el modelo Coco SSD:\n<pre><code class=\"language-js\">const [predictions, setPredictions] = useState([]);<\/code><\/pre>\n<\/li>\n<li>A continuaci\u00f3n, crea una funci\u00f3n que cargue el modelo Coco SSD, recoja el v\u00eddeo y genere las predicciones:\n<pre><code class=\"language-jsx\">const predictObject = async () =&gt; {\n    const model = await cocoSsd.load();\n\n    model.detect(videoRef.current).then((predictions) =&gt; {\n      setPredictions(predictions);\n    })\n\n      .catch(err =&gt; {\n        console.error(err)\n      });\n  };<\/code><\/pre>\n<p>Esta funci\u00f3n utiliza el v\u00eddeo y genera predicciones para los objetos presentes en el v\u00eddeo. Te proporcionar\u00e1 un array de objetos previstos, cada uno de los cuales contendr\u00e1 una etiqueta, un porcentaje de confianza y un conjunto de coordenadas que muestran la ubicaci\u00f3n del objeto en el fotograma de v\u00eddeo.<\/p>\n<p>Tienes que llamar continuamente a esta funci\u00f3n para procesar los fotogramas de v\u00eddeo a medida que llegan y, a continuaci\u00f3n, utilizar las predicciones almacenadas en el estado <code>predictions<\/code> para mostrar recuadros y etiquetas de cada objeto identificado en la secuencia de v\u00eddeo en directo.<\/li>\n<li>A continuaci\u00f3n, utiliza la funci\u00f3n <code>setInterval<\/code> para llamar continuamente a la funci\u00f3n. Tambi\u00e9n debes impedir que se llame a esta funci\u00f3n despu\u00e9s de que el usuario haya detenido la transmisi\u00f3n de la webcam. Para ello, utiliza la funci\u00f3n <code>clearInterval<\/code> de JavaScript. A\u00f1ade el siguiente contenedor de estado y el hook <code>useEffect<\/code> en el componente <code>ObjectDetection<\/code> para configurar la funci\u00f3n <code>predictObject<\/code> para que se llame continuamente cuando la webcam est\u00e9 activada y se elimine cuando la webcam est\u00e9 desactivada:\n<pre><code class=\"language-jsx\">const [detectionInterval, setDetectionInterval] = useState()\n\n  useEffect(() =&gt; {\n    if (isWebcamStarted) {\n      setDetectionInterval(setInterval(predictObject, 500))\n    } else {\n      if (detectionInterval) {\n        clearInterval(detectionInterval)\n        setDetectionInterval(null)\n      }\n    }\n  }, [isWebcamStarted])<\/code><\/pre>\n<p>Esto configura la app para que detecte los objetos presentes delante de la webcam cada 500 milisegundos. Puedes considerar cambiar este valor en funci\u00f3n de lo r\u00e1pida que quieras que sea la detecci\u00f3n de objetos, teniendo en cuenta que hacerlo con demasiada frecuencia puede hacer que tu app utilice mucha memoria en el navegador.<\/li>\n<li>Ahora que tienes los datos de la predicci\u00f3n en el contenedor de estado <code>prediction<\/code>, puedes utilizarlos para mostrar una etiqueta y un recuadro alrededor del objeto en la secuencia de v\u00eddeo en directo. Para ello, actualiza la sentencia <code>return<\/code> del <code>ObjectDetection<\/code> para que devuelva lo siguiente:\n<pre><code class=\"language-jsx\">return (\n    &lt;div className=\"object-detection\"&gt;\n      &lt;div className=\"buttons\"&gt;\n        &lt;button onClick={isWebcamStarted ? stopWebcam : startWebcam}&gt;{isWebcamStarted ? \"Stop\" : \"Start\"} Webcam&lt;\/button&gt;\n      &lt;\/div&gt;\n      &lt;div className=\"feed\"&gt;\n        {isWebcamStarted ? &lt;video ref={videoRef} autoPlay muted \/&gt; : &lt;div \/&gt;}\n        {\/* Add the tags below to show a label using the p element and a box using the div element *\/}\n        {predictions.length &gt; 0 && (\n          predictions.map(prediction =&gt; {\n            return &lt;&gt;\n              &lt;p style={{\n                left: `${prediction.bbox[0]}px`, \n                top: `${prediction.bbox[1]}px`,\n                width: `${prediction.bbox[2] - 100}px`\n            }}&gt;{prediction.class  + ' - with ' \n            + Math.round(parseFloat(prediction.score) * 100) \n            + '% confidence.'}&lt;\/p&gt;\n            &lt;div className={\"marker\"} style={{\n              left: `${prediction.bbox[0]}px`,\n              top: `${prediction.bbox[1]}px`,\n              width: `${prediction.bbox[2]}px`,\n              height: `${prediction.bbox[3]}px`\n            }} \/&gt;\n            &lt;\/&gt;\n          })\n        )}\n      &lt;\/div&gt;\n      {\/* Add the tags below to show a list of predictions to user *\/}\n      {predictions.length &gt; 0 && (\n        &lt;div&gt;\n          &lt;h3&gt;Predictions:&lt;\/h3&gt;\n          &lt;ul&gt;\n            {predictions.map((prediction, index) =&gt; (\n              &lt;li key={index}&gt;\n                {`${prediction.class} (${(prediction.score * 100).toFixed(2)}%)`}\n              &lt;\/li&gt;\n            ))}\n          &lt;\/ul&gt;\n        &lt;\/div&gt;\n      )}\n\n    &lt;\/div&gt;\n  );<\/code><\/pre>\n<p>Esto mostrar\u00e1 una lista de predicciones justo debajo de la imagen de la c\u00e1mara web y dibujar\u00e1 una caja alrededor del objeto predicho utilizando las coordenadas de Coco SSD junto con una etiqueta en la parte superior de las cajas.<\/li>\n<li>Para estilizar correctamente las cajas y la etiqueta, a\u00f1ade el siguiente c\u00f3digo al archivo <strong>index.css<\/strong>:\n<pre><code class=\"language-css\">.feed {\n  position: relative;\n\n  p {\n    position: absolute;\n    padding: 5px;\n    background-color: rgba(255, 111, 0, 0.85);\n    color: #FFF;\n    border: 1px dashed rgba(255, 255, 255, 0.7);\n    z-index: 2;\n    font-size: 12px;\n    margin: 0;\n  }\n\n  .marker {\n    background: rgba(0, 255, 0, 0.25);\n    border: 1px dashed #fff;\n    z-index: 1;\n    position: absolute;\n  }\n\n}<\/code><\/pre>\n<p>Esto completa el desarrollo de la aplicaci\u00f3n. Ahora puedes reiniciar el servidor dev para probar la aplicaci\u00f3n. Este es el aspecto que deber\u00eda tener una vez completada:<\/p>\n<p><figure id=\"attachment_176988\" aria-describedby=\"caption-attachment-176988\" style=\"width: 2988px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-176988 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2024\/04\/object-detection-demo.gif\" alt=\"Un GIF que muestra al usuario ejecutando la aplicaci\u00f3n, permitiendo el acceso de la c\u00e1mara a la misma, y luego la aplicaci\u00f3n mostrando recuadros y etiquetas alrededor de los objetos detectados en el feed.\" width=\"2988\" height=\"1466\"><figcaption id=\"caption-attachment-176988\" class=\"wp-caption-text\">Demostraci\u00f3n de la detecci\u00f3n de objetos en tiempo real mediante la webcam<\/figcaption><\/figure><\/li>\n<\/ol>\n<p>Puedes encontrar el c\u00f3digo completo en este <a href=\"https:\/\/github.com\/krharsh17\/realtime-object-detection\" target=\"_blank\" rel=\"noopener noreferrer\">repositorio de GitHub<\/a>.<\/p>\n<h2>Despliega la aplicaci\u00f3n completa en Kinsta<\/h2>\n<p>El \u00faltimo paso es desplegar la aplicaci\u00f3n en Kinsta para ponerla a disposici\u00f3n de tus usuarios. Para ello, Kinsta te permite <a href=\"https:\/\/docs.sevalla.com\/static-sites\/overview\">alojar hasta 100 sitios web est\u00e1ticos<\/a> de <strong>forma gratuita<\/strong> directamente desde tu proveedor Git preferido (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> o <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>).<\/p>\n<p>Una vez que tu repositorio git est\u00e9 listo, sigue estos pasos para desplegar tu app de detecci\u00f3n de objetos en Kinsta:<\/p>\n<ol>\n<li>Inicia sesi\u00f3n o crea una cuenta para ver tu panel <a href=\"https:\/\/my.kinqsta.com\/?lang=es\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Autoriza a Kinsta con tu proveedor Git.<\/li>\n<li>Haz clic en <strong>Sitios Est\u00e1ticos<\/strong> en la barra lateral izquierda y, a continuaci\u00f3n, en <strong>A\u00f1adir sitio<\/strong>.<\/li>\n<li>Selecciona el repositorio y la rama desde la que deseas desplegar.<\/li>\n<li>Asigna un nombre \u00fanico a tu sitio.<\/li>\n<li>A\u00f1ade la configuraci\u00f3n de construcci\u00f3n en el siguiente formato:\n<ul>\n<li><strong>Comando de construcci\u00f3n<\/strong>: <code>yarn build<\/code> o <code>npm run build<\/code><\/li>\n<li><strong>Versi\u00f3n de Node:<\/strong> <code>20.2.0<\/code><\/li>\n<li><strong>Directorio de publicaci\u00f3n:<\/strong> <code>dist<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Por \u00faltimo, haz clic en <strong>Crear sitio<\/strong>.<\/li>\n<\/ol>\n<p>Una vez desplegada la aplicaci\u00f3n, puedes hacer clic en <strong>Visitar Sitio<\/strong> desde el panel de control para acceder a la aplicaci\u00f3n. Ahora puedes probar a ejecutar la aplicaci\u00f3n en varios dispositivos con c\u00e1maras para ver c\u00f3mo funciona.<\/p>\n<p>Como alternativa al Alojamiento de Sitios Est\u00e1ticos, puedes desplegar tu sitio est\u00e1tico con el <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Alojamiento de Aplicaciones<\/a> de Kinsta, que proporciona una mayor flexibilidad de alojamiento, una gama m\u00e1s amplia de ventajas y acceso a funciones m\u00e1s robustas. Por ejemplo, escalabilidad, despliegue personalizado mediante un <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/dockerfile\">Dockerfile<\/a> y <a href=\"https:\/\/docs.sevalla.com\/applications\/analytics\">an\u00e1liticas completas<\/a> que abarcan datos hist\u00f3ricos y en tiempo real.<\/p>\n<h2>Resumen<\/h2>\n<p>Has construido con \u00e9xito una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando React, TensorFlow.js y Kinsta. Esto te permite explorar el apasionante mundo de la visi\u00f3n por ordenador y crear experiencias interactivas directamente en el navegador del usuario.<\/p>\n<p>Recuerda que el modelo Coco SSD que hemos utilizado es s\u00f3lo un punto de partida. Con una mayor exploraci\u00f3n, puedes profundizar en la detecci\u00f3n de objetos personalizada utilizando TensorFlow.js, lo que te permitir\u00e1 adaptar la aplicaci\u00f3n para identificar objetos espec\u00edficos relevantes para tus necesidades.<\/p>\n<p>\u00a1Las posibilidades son enormes! Esta aplicaci\u00f3n te servir\u00e1 de base para crear aplicaciones m\u00e1s detalladas, como experiencias de realidad aumentada o sistemas de vigilancia inteligentes. Al desplegar tu app en la fiable plataforma de Kinsta, podr\u00e1s compartir tu creaci\u00f3n con el mundo y ser testigo de c\u00f3mo cobra vida el poder de la visi\u00f3n por ordenador.<\/p>\n<p><em>\u00bfQu\u00e9 problema te has encontrado que crees que puede resolver la detecci\u00f3n de objetos en tiempo real? \u00a1H\u00e1znoslo saber en los comentarios de abajo!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como las c\u00e1maras han mejorado, la detecci\u00f3n de objetos en tiempo real se ha convertido en una funcionalidad cada vez m\u00e1s solicitada. Desde los coches aut\u00f3nomos &#8230;<\/p>\n","protected":false},"author":238,"featured_media":74565,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1296,1328,1321],"class_list":["post-74564","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-frameworks-javascript","topic-generadores-sitios-estaticos","topic-react"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Este art\u00edculo explica c\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando React que aprovecha la webcam de un usuario y desplegar la aplicaci\u00f3n en Kinsta.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta\" \/>\n<meta property=\"og:description\" content=\"Este art\u00edculo explica c\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando React que aprovecha la webcam de un usuario y desplegar la aplicaci\u00f3n en Kinsta.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-15T07:36:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-18T07:47:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kumar Harsh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Este art\u00edculo explica c\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando React que aprovecha la webcam de un usuario y desplegar la aplicaci\u00f3n en Kinsta.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1024x512.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kumar Harsh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/\"},\"author\":{\"name\":\"Kumar Harsh\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\"},\"headline\":\"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta\",\"datePublished\":\"2024-04-15T07:36:16+00:00\",\"dateModified\":\"2024-04-18T07:47:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/\"},\"wordCount\":1861,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1.jpg\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/\",\"url\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/\",\"name\":\"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1.jpg\",\"datePublished\":\"2024-04-15T07:36:16+00:00\",\"dateModified\":\"2024-04-18T07:47:42+00:00\",\"description\":\"Este art\u00edculo explica c\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando React que aprovecha la webcam de un usuario y desplegar la aplicaci\u00f3n en Kinsta.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React\",\"item\":\"https:\/\/kinqsta.com\/es\/secciones\/react\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/es\/#website\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\",\"name\":\"Kumar Harsh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"caption\":\"Kumar Harsh\"},\"description\":\"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.\",\"sameAs\":[\"https:\/\/kumarharsh.me\"],\"url\":\"https:\/\/kinqsta.com\/es\/blog\/author\/kumarharsh\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta - Kinsta\u00ae","description":"Este art\u00edculo explica c\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando React que aprovecha la webcam de un usuario y desplegar la aplicaci\u00f3n en Kinsta.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta","og_description":"Este art\u00edculo explica c\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando React que aprovecha la webcam de un usuario y desplegar la aplicaci\u00f3n en Kinsta.","og_url":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2024-04-15T07:36:16+00:00","article_modified_time":"2024-04-18T07:47:42+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app.jpg","type":"image\/jpeg"}],"author":"Kumar Harsh","twitter_card":"summary_large_image","twitter_description":"Este art\u00edculo explica c\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando React que aprovecha la webcam de un usuario y desplegar la aplicaci\u00f3n en Kinsta.","twitter_image":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1024x512.jpg","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Kumar Harsh","Tiempo de lectura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/"},"author":{"name":"Kumar Harsh","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9"},"headline":"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta","datePublished":"2024-04-15T07:36:16+00:00","dateModified":"2024-04-18T07:47:42+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/"},"wordCount":1861,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1.jpg","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/","url":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/","name":"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1.jpg","datePublished":"2024-04-15T07:36:16+00:00","dateModified":"2024-04-18T07:47:42+00:00","description":"Este art\u00edculo explica c\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real utilizando React que aprovecha la webcam de un usuario y desplegar la aplicaci\u00f3n en Kinsta.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#primaryimage","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1.jpg","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/object-detection-app-1.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/es\/blog\/react-deteccion-de-objetos-app\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"React","item":"https:\/\/kinqsta.com\/es\/secciones\/react\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo crear una aplicaci\u00f3n de detecci\u00f3n de objetos en tiempo real con React y Kinsta"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/es\/#website","url":"https:\/\/kinqsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9","name":"Kumar Harsh","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","caption":"Kumar Harsh"},"description":"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.","sameAs":["https:\/\/kumarharsh.me"],"url":"https:\/\/kinqsta.com\/es\/blog\/author\/kumarharsh\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/74564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/users\/238"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/comments?post=74564"}],"version-history":[{"count":6,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/74564\/revisions"}],"predecessor-version":[{"id":74599,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/74564\/revisions\/74599"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74564\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74564\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74564\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74564\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74564\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74564\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74564\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74564\/translations\/es"},{"href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74564\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media\/74565"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media?parent=74564"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/tags?post=74564"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/topic?post=74564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}