求助:视频的存储问题
我现在做一个项目,就是用视频采集卡采集摄像头的数据,视频采集卡具有SDK二次开发的功能,我需要在视频采集卡的回调函数中加入算法对视频进行处理,显示窗口有两个,一个是显示原视频窗口,一个是显示处理后的视频,原视频可以通过采集卡提供的函数存储,但处理后的视频我就不知道怎么存储了!下面是我在回调函数写的程序:
指针plnfo是指向从摄像头采集的视频流帧的DIB的BITMAPINFO头的,pBits指向点矩阵数据。
我现在就是把pBits指向的点矩阵数据按照算法对每个像素点进行处理并存到预先分配的内存空间GrayImage中,并显示出来!怎么才能将内存空间GrayImage中数据以视频的形式存储起来!
请老师看看我的程序,并给我提出点建议,看能不能有其他比较简单的方法把处理后的视频存储到硬盘中去!学生感激万分!求求老师给点建议!
void CShowStreamDlg::ShowStream(const BITMAPINFO * pInfo, const BYTE * pBits)
{
if(!pInfo || !pBits)
return;
HDC hdc = ::GetDC(m_hWnd);
int w = pInfo->bmiHeader.biWidth;
int h = pInfo->bmiHeader.biHeight;
int Gray;
BYTE*GrayImage=(BYTE*)(new BYTE[w*h*4]);
SetStretchBltMode(hdc, COLORONCOLOR);
for(i=0;i<h;i++)
for(int j=0;j<w;j++)
{
Gray=(pBits[i*3*w+j*3+0]*11+pBits[i*3*w+j*3+1]*59+pBits[i*3*w+j*3+2]*30)/100;
GrayImage[i*3*w+j*3+0]=Gray;
GrayImage[i*3*w+j*3+1]=Gray;
GrayImage[i*3*w+j*3+2]=Gray;
}
StretchDIBits(hdc,
0, 0, WIDTH, HEIGHT,
0, 0, w, h,
GrayImage, pInfo, DIB_RGB_COLORS, SRCCOPY);
::ReleaseDC(m_hWnd, hdc);
}