请教高手关于VC中用于是视频截取以及保存截图的的方法

hebingyang 2006-03-09 02:32:16
请教一下各位高手
最近刚刚在开始关于视频捕捉的程序设计
现在刚刚调试了一个小程序
但是遇到了一些问题
就是程序能够正常的显示 停止显示
但是截取的时候画面只是闪动一下 没有停留
停止截取的话也是稍微恢复一下截取的画面
没有能够长时间显示在画面上
也没有实现图像的截取后保存
希望各位高手能够给我一些指点
非常感谢
现在把程序源代码公布如下


引用头文件<vfw.h> ,导入 vfw32.lib 库
在窗体上添加四个个按钮,修改ID为IDC_VIDEO , IDC_CAPTURE , IDC_STOPVIDEO , IDC_STOPCAPTURE;
//为按钮IDC_VIDEO添加代码开始浏览视频:
{
//create a window for captureWindow
CWnd *mywnd=new CWnd;
mywnd->Create(_T("STATIC"), "", WS_CHILD | WS_VISIBLE,CRect(0, 0, 400, 400), this, 1234);
mywnd->ShowWindow(SW_SHOW);
CRect rect;
mywnd->GetWindowRect(rect);
//create capture window
ghCapWnd=capCreateCaptureWindow( "My Own Capture Window",WS_CHILD | WS_VISIBLE ,0, 0, (rect.right-rect.left), (rect.bottom-rect.top), mywnd->GetSafeHwnd(), 1235);
//connect device
capDriverConnect (ghCapWnd, 0);
//get params
CAPTUREPARMS CapParms;
capCaptureGetSetup(ghCapWnd,&CapParms,sizeof (CAPTUREPARMS))
//设置桢速
CapParms.dwRequestMicroSecPerFrame=40000;
//有无时间限制
CapParms.fLimitEnabled = FALSE;
//是否捕捉音频
//CapParms.fCaptureAudio = FALSE;
//MCI Device支持
CapParms.fMCIControl = FALSE;
//设置窗口,如果为false,捕捉画面在桌面上
CapParms.fYield = TRUE;
//停止捕捉键设置
CapParms.vKeyAbort = VK_ESCAPE;
CapParms.fAbortLeftMouse = FALSE;
CapParms.fAbortRightMouse = FALSE;
capCaptureSetSetup(ghCapWnd,&CapParms,sizeof (CAPTUREPARMS));
//设置预览时的比例
capPreviewScale(ghCapWnd, 1);
//设置预览时的帧频率
capPreviewRate(ghCapWnd,66);
//是否支持比例变化
capPreviewScale(ghCapWnd,FALSE);
//打开预览
capPreview(ghCapWnd, 1);
}
//为IDC_CAPTURE添加代码开始捕获视频:
{
capCaptureSequence(ghCapWnd);
}
//为IDC_STOPCAPTURE添加代码停止捕捉:
{
capCaptureAbort(ghCapWnd);
}
//为IDC_STOPVIDEO添加代码断开连接:
{
capDriverDisconnect(ghCapWnd);
}

...全文
166 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonkil 2006-03-09
  • 打赏
  • 举报
回复
初始化的时候,设置回调函数。
capSetCallbackOnFrame(ghCapWnd, (FARPROC)FrameCallbackProc);

然后建立FrameCallbackProc些函数
LRESULT CALLBACK FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)
{

   memcpy(m_pBits,lpVHdr->lpData,lpVHdr->dwBufferLength);//一个内存块指针。
   return (LRESULT) TRUE ;
}

==================
然后在OnDraw中
画上m_pBits.就可以显示了。

你那样失败的原因,那所看到的图像并不是你在程序中画到窗体上,是通过摄像头驱动显示的(这样说不是知道准不准确)和你程序是无关的。当然一闪而过!
hebingyang 2006-03-09
  • 打赏
  • 举报
回复
忘了说
这个程序没有涉及到directshow
希望大虾们给与指点的时候能稍微注意
多谢了

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧