bi.hwndOwner = this->m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szDir;
bi.lpszTitle = "请选择受控的目录";//strDlgTitle;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if(pidl == NULL)
return;
if(!SHGetPathFromIDList(pidl, szDir))
return;
m_editSaveDir.Format("%s",szDir);
UpdateData(FALSE);
}
二、点击抓取时:
void CFrameGrabberDlg::OnGrab()
{
UpdateData();//新增加,得到两参数值
三、输出系统系列图片:
get_StreamLength这个函数是取得视频文件的持续时间,单位为秒,get_FrameRate这个函数是取得帧率,把这两个函数得到的值相乘,便可以得到视频文件总的帧数。但是WriteBitmapBits这个函数的第一个参数是时间,而不是帧的序号,而且这个时间单位就是帧号与帧率之除,具体实现如下:
double totalTime,dRate;
pDet->get_FrameRate(&dRate);
pDet->get_StreamLength(&totalTime);
// 将第一帧保存为指定路径的位图文件
for(i=0;i {
CString str;
str.Format("%s%d.bmp",m_editSaveDir,i);
double position = (double)(i/dRate);
CComBSTR saveBSTR(str);
hr = pDet->WriteBitmapBits(position, width, height, saveBSTR);
}
阅读(2434) | 评论(2) | 转发(0) |