Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

279
Vistas
¿Cómo puedo numerar una lista de puntos en p5.js?

¿Es posible numerar una lista de puntos en p5.js? En este momento estoy usando ml5.pj para las detecciones de mallas faciales, que generan coordenadas x e y para un conjunto de 465 puntos. Quiero seleccionar algunos. Para hacer eso, necesito saber cuáles son los índices correspondientes. ¿Alguna forma posible de hacer esto?

No es relevante, pero en Grasshopper 3D, es un componente llamado "lista de puntos"

ingrese la descripción de la imagen aquí

 let facemesh; let video; let predictions = []; function setup() { createCanvas(640, 480); video = createCapture(VIDEO); video.size(width, height); facemesh = ml5.facemesh(video, modelReady); // This sets up an event that fills the global variable "predictions" // with an array every time new predictions are made facemesh.on("predict", results => { predictions = results; }); // Hide the video element, and just show the canvas video.hide(); } function modelReady() { console.log("Model ready!"); } function draw() { // image(video, 0, 0, width, height); background(255); // We can call both functions to draw all keypoints drawKeypoints(); } // A function to draw ellipses over the detected keypoints function drawKeypoints() { for (let i = 0; i < predictions.length; i += 1) { const keypoints = predictions[i].scaledMesh; // Draw facial keypoints. for (let j = 0; j < keypoints.length; j += 1) { const [x, y] = keypoints[j]; fill(0, 255, 0); ellipse(x, y, 3, 3); } } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

De acuerdo, si te entiendo correctamente, quieres agregar etiquetas a cada punto. Puede volverse sofisticado con esto y mantenerlo en el aire rastreando las coordenadas del cursor y usándolas como una clave para acceder a un valor de objeto. Sin embargo, dado que dices que no eres muy completo en programación, voy a mantener esto muy simple aquí...

Solo vamos a agregar texto donde está el punto y lo compensaremos verticalmente en 5px. Puede leer más sobre el texto aquí en la documentación de p5.js: https://p5js.org/reference/#/p5/text

Aquí hay un enlace sobre literales de plantilla en js: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

 // A function to draw ellipses over the detected keypoints function drawKeypoints() { for (let i = 0; i < predictions.length; i += 1) { const keypoints = predictions[i].scaledMesh; // Draw facial keypoints. for (let j = 0; j < keypoints.length; j += 1) { const [x, y] = keypoints[j]; fill(0, 255, 0); ellipse(x, y, 3, 3); text(`${i}-${j}`, x, y+5); // Draw Text with Index Labelling } } }

Avanzado: Mostrar el texto al pasar el mouse.

  1. Cree un Objeto para mostrar los valores basados en xy:ij key:vals
  2. Detectar coordenadas X, Y del mouse
  3. Mostrar al pasar el mouse
 const hoverCoords = {} function draw() { background(255); drawKeypoints(); hoverCoords[`${mouseX}-${mouseY}`] && text(hoverCoords[`${mouseX}-${mouseY}`], x, y+5) } // A function to draw ellipses over the detected keypoints function drawKeypoints() { for (let i = 0; i < predictions.length; i += 1) { const keypoints = predictions[i].scaledMesh; // Draw facial keypoints. for (let j = 0; j < keypoints.length; j += 1) { const [x, y] = keypoints[j]; hoverCoords[`${x}-${y}`] = `${i}-${j}` // Create object key val fill(0, 255, 0); ellipse(x, y, 3, 3); } } }

No he probado lo anterior, pero sabe que debería ser el enfoque correcto usar un objeto y establecer las coordenadas como valores clave y luego poder hacer una coincidencia real en eso para mostrar los valores ij. Busque objetos en javascript.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda