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

98
Vistas
crear correctamente objeto con datos

Tengo un bucle en el que itero sobre los datos de píxeles recibidos del método getImageData(). Allí encuentro las coordenadas de cada píxel (coordX y coordY). Luego filtro los píxeles según el color y quiero insertar los píxeles que necesito en el objeto de la siguiente manera:

 result.coords[coordX][coordY].counted

Si con números, entonces así:

 result.coords = { 1: { 1: { counted: false, }, 2: { counted: false, }, }, 2: { 5: { counted: false, }, 8: { counted: false, }, 9: { counted: false, }, }, };

Hice esto pero hay problemas:

 var result = { coords: {}, }, pixel = new app.Color(), array = {}, coordX, coordY, i; for (i = 0; options.imageData && i < options.imageData.data.length; i += 4) { pixel.x = options.imageData.data[i]; pixel.y = options.imageData.data[i + 1]; pixel.z = options.imageData.data[i + 2]; pixel.a = options.imageData.data[i + 3]; coordX = (i / 4) % options.imageData.width; coordY = Math.floor(i / 4 / options.imageData.width); // Pixel filter by color if (pixel.x == 255 && pixel.a == 255) { array[coordY] = { counted: false, }; result.coords[coordX] = array; // .. next is the code that is not important .. } }

Problema del siguiente tipo: cuando presiono una nueva coordenada Y , se agrega a la matriz para todas las X Pero puedo tener casos en los que, por ejemplo, la coordenada Y=5 no estará en la coordenada X=1 , sino solo en X=2 (como en el ejemplo anterior). Pero en mi caso, Y=5 también se agregará a X=1 .

Dígame cómo crear correctamente un objeto con la propiedad 'coords', en el que habrá propiedades X , en el que se almacenará todo Y relacionado con él, en el que también habrá propiedad 'contado' con valor False.

Editar:

me gusta esto:

 data = {}; if (pixel.x == 255 && pixel.a == 255) { if (result.coords[coordX]) { for (var item in result.coords[coordX]) { data[item] = result.coords[coordX][item]; } } data[coordY] = { counted: false, }; result.coords[coordX] = data; data= {}; }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Dada una i , el OP calcula coordX y coordY . Lo que se necesita es algo así como un inverso para producir una clave para la estructura de datos de conteo.

 const width = options.imageData.width; function keyForXY(x, y) { return y * width + x } function setValueAtXY(object, x, y, value) { const key = keyForXY(x,y); object[key] = value; } function getValueAtXY(object, x, y) { const key = keyForXY(x,y); return object[key]; }

Reemplace su acceso a la estructura de datos con estos, como...

 if (pixel.x == 255 && pixel.a == 255) { setValueAtXY(array, coordX, coordY, { counted: false }); setValueAtXY(result.coords, coordX, coordY, array); }

Tenga en cuenta que no estoy seguro exactamente de lo que está sucediendo en el OP semánticamente ... por qué, por ejemplo, estamos colocando un bool en un objeto o cómo se relacionan entre sí "matriz" y "result.coords", así que no estoy respaldando algo de eso, simplemente mapeando la lógica OP en una estructura de datos más apropiada (aparente).

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