Captura de webcam silenciosa
Publicado: 11 Oct 2014, 13:54
Hola a todos, soy nuevo en este foro y vengo con ganas de compartir mis códigos y poder aprender de los vuestros.
Estoy buscando la manera de hacer una captura con la webcam de manera silenciosa, hasta he conseguido hacer la foto con el código de abajo, pero me sale una ventana para elegir un programa externo que me haga la foto, lo selecciono y me hace la foto, la función que lo hace es capDriverConnect(), lo que quiero es que haga la foto sin que salga esa ventana, es decir elegir el driver o programa que haga la foto de otra forma:
Saludos.
Estoy buscando la manera de hacer una captura con la webcam de manera silenciosa, hasta he conseguido hacer la foto con el código de abajo, pero me sale una ventana para elegir un programa externo que me haga la foto, lo selecciono y me hace la foto, la función que lo hace es capDriverConnect(), lo que quiero es que haga la foto sin que salga esa ventana, es decir elegir el driver o programa que haga la foto de otra forma:
#define MY_BUFSIZE 1024
#include <windows.h>
#include <iostream>
#include <cstdio>
#include <fstream>
#include <cstring>
#include <vfw.h>
using namespace std;
void photo();
void photo()
{
HWND hwndMain;
HWND hwndVideo;
char szDeviceName[80];
char szDeviceVersion[80];
char item[161];
int i;
char pszOldWindowTitle[MY_BUFSIZE];
GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
SetConsoleTitle("deraradfsfsa");
Sleep(40);
hwndMain = FindWindow(NULL, "deraradfsfsa");
SetConsoleTitle(pszOldWindowTitle);
hwndVideo = capCreateCaptureWindow("My Capture Window", M_COMMAND, 0, 0, 640, 480, hwndMain, 0);//NULL para que no se vea la ventana.
capDriverConnect(hwndVideo, 0);//Esta función abre una ventana y me pide elegir un driver para hacer la foto (ciberlink...)
capPreviewRate(hwndVideo, 66);
capPreview(hwndVideo, true);
capDlgVideoSource(hwndVideo);
for(int i=0;i<25;i++)
{
capGrabFrame(hwndVideo);
}
capFileSaveDIB(hwndVideo, "C:\\Users\\User\\Desktop\\captura.bmp");
capPreview(hwndVideo, FALSE);
DestroyWindow(hwndVideo);
hwndVideo = NULL;
}
Estoy probando también con esto para capturar el driver:/*capDriverConnect(hwndVideo, 0);
WM_CAP_DRIVER_CONNECT wParam = (WPARAM)(iIndex);
lParam = 0D;*/
while (!SendMessage(hwndVideo, WM_CAP_DRIVER_CONNECT, driver,0))
{
driver++;
if (driver>9)
{
DestroyWindow(hwndVideo);
printf("fallo al intentar conectar");
break;
}
}
Es equivalente, sigue saliendo la ventana y tengo que elegir el driver, me pregunto si alguno de ustedes saben como hacer equivaler esa función sin sacar la ventana.Saludos.