• Sábado 4 de Mayo de 2024, 20:52

Autor Tema:  Problema con la captura de frames de la webcam  (Leído 886 veces)

quantumluik

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Problema con la captura de frames de la webcam
« en: Sábado 13 de Junio de 2009, 13:48 »
0
La cuestion es la siguiente: he estado intentando capturar una imagen con una webcam y de esta imagen extraer el array de pixels en RGB 24 ya sea en byte[] o en int[] pues solo he podido hacer que guarde la imagen en un archivo del disco pero esto demora como 2 segundos y pues la idea es hacer fluido la extrcaccion de estos frames ya que no tiene logica hacer que los guarde en disco para despues obtener el array de bits y despues borrar el archivo bmp, este es el fuente que tengo hasta ahora.

void camToDisk(){

   //metodo no visible, graba mal el nombre del archivo
   
   char *lBMPFileName = "WebCamSnapshot.bmp";
   HWND lWndVideoHandle;
   CAPSTATUS lCapStat;
   HWND lWND;
   
   lWND = GetDesktopWindow();
   ZeroMemory(&lCapStat, sizeof(CAPSTATUS));
   lWndVideoHandle = capCreateCaptureWindow((LPCTSTR)"WebCam", WS_CHILD, 0, 0, 320, 240,(HWND) lWND, (int) 1);
   capDriverConnect(lWndVideoHandle, 0);
   Sleep(1000);
   capGetStatus(lWndVideoHandle, &lCapStat, sizeof(CAPSTATUS));

   capGrabFrame(lWndVideoHandle);
   capEditCopy(lWndVideoHandle);
   capFileSaveDIB(lWndVideoHandle, lBMPFileName);

   capDriverDisconnect(lWndVideoHandle);
   DestroyWindow(lWndVideoHandle);
   
   DestroyWindow(lWND);

}

la cosa es que graba mal el nombre del archivo bmp y encima hay que ponerle extencion bmp y ni idea de por que hace eso

la otra es que encontre que la estructura BITMAPINFO almacena una DIB image pero ni idea  de como sacarle el array de pixels en RAW RGB 24

DWORD lWndVideoSize = capGetVideoFormatSize(lWndVideoHandle);
ZeroMemory(&bmpinfo, sizeof(BITMAPINFO));
capGetVideoFormat(lWndVideoHandle, &bmpinfo, sizeof(bmpinfo));

supuestamente la primera linea da el tamaño del formato
la segunda llena la estructura con ceros
y la tercera carga un fotograma en ella

pero ni idea de como hago para convertir una estructura BITMAPINFO en una imagen o si se pued sacarle el array de pixels en RAW RGB 24, agradeceria si alguien me explicara como hacer esto, he buscado esto por toda la red y no he podido encontarar nada busque en el MSDN y nada que me solucione esto.

de antemano gracias x tdo.