win32apiでの動画出力
win32apiとopenCVを使った動画出力プログラムを作りたいのですが,
フリーズしてしまいます.
詳しい方,力を貸してください.
以下にプログラムを載せます.
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
int x, y;
int id;
int c;
char* szWndName = "camera capture";
CvCapture* capture;
// IplImage* img;
switch (msg) {
case WM_CREATE:
hDC = GetDC( hWnd );
return DefWindowProc(hWnd, msg, wParam, lParam);
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDM_END:
SendMessage(hWnd, WM_CLOSE, 0, 0L);
break;
case IDM_USB:
capture = cvCaptureFromCAM(0);
if(capture == NULL){
MessageBox(hWnd, (LPCTSTR)TEXT("Not camera"), (LPCTSTR)TEXT("Test"), MB_OK);
return -1;
}
while(1){
img = cvQueryFrame(capture);
bmpData = (LPDWORD)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, img->width * img->height * 4);
iplTobmp(img, bmpInfo, bmpData);
StretchDIBits( hDC,
0, 0, img->width, img->height,
0, 0, img->width, img->height,
bmpData, &bmpInfo, DIB_RGB_COLORS, SRCCOPY);
}
ReleaseDC(hWnd, hDC);
cvReleaseCapture(&capture);
return 0;
break;
}
break;
case WM_LBUTTONDOWN: // マウスカーソルが移動したときに送られてくる
// 移動先の座標を取得
x = LOWORD( lParam );
y = HIWORD( lParam );
// 座標をテキストファイルに書き込む
_ftprintf( g_fp, _T("(%d %d)\n"), x, y );
return 0;
case WM_CLOSE:
id = MessageBox(hWnd, TEXT("Close?"), TEXT("Close"), MB_OKCANCEL | MB_ICONQUESTION);
if(id == IDOK)
DestroyWindow(hWnd);
return (0L);
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}