1
« en: Viernes 2 de Diciembre de 2005, 12:22 »
Buenas a todos y a todas.
Necesito ayuda con este c++.net que me va a matar de un disgusto. Les explico:
Tengo que volcar una imagen leída por una cámara en una matriz. Hasta ahí todo normal. La librería de la cámara me proporciona un método que me devuelve en sucesivos pasos, y línea a línea la imagen capturada, osea, que si yo saco una imagen de 1200 filas X 1600 columnas, tengo que llamar 1200 veces a este método para bajarme la imagen. Hasta aquí todo perfecto. Ahora empiezan los problemas:
El parámetro de la función de la librería, donde se me vuelca la línea leída, es un puntero a void, (void *), pero si yo me declaro una variable de este tipo:
unsigned short vParcial[1600]
Y lo utilizo en la llamada a la función:
LeerLinea(vParcial);
¡¡¡funciona!!!!!, y en mis 1600 posiciones de este vector me coloca los valores de los 1600 píxeles capturados. Lo que ocurre que yo ahora me tengo que meter en un bucle de este tipo:
static UInt16 iimage[,] = __gc new UInt16[1200, 1600];
for (j=0; j>1600; j++)
{
iimage[i,j] = vParcial[j];
}
para volcar cada línea en mi matriz, y este es el paso que me quiero saltar. Quiero que cunado llame a la función LeerLinea le pueda pasar algún tipo de matriz para que el tío me lo vuelque en el sitio correcto.
En c++ estándar yo me declaro un vector del tipo:
unsigned short timage[1200][1600];
y se lo paso a la función:
LeerLinea(timage);
y funciona muy bien, pero en el puto .Net no, de hecho, si me declaro mi maravillosa matriz:
static unsigned short timage __nogc[1200][1600];
y se la paso a la función:
LeerLinea(timage);
me salta el compilador que no puede convertir el parámetro de unsigned short [1600] a void *, ¡¡¡¡¡¡ que es precisamente como me declaro la primera variable vParcial y donde SÍ funciona !!!!!!!!
Yo me voy a cortar las venas.....
¿A alguien sele ocurre algo? Y perdón por el rollazo que les acabo de soltar...
Gracias y saludos desde Gran Canaria