首页上一页 1 下一页尾页 1 条记录 1/1页
visual c++ 视频技术方案宝典的问题
发表在C语言图书答疑
2011-01-13
是否精华
是
否
版块置顶:
是
否
通过VFW的回调函数LRESULT CALLBACK FrameCallbackProc(HWND ghVideo,LPVIDEOHDR lpVHdr)得到数据视频数据。
通过memcpy((void*)(buf),lpVHdr->lpData,lpVHdr->dwBufferLength);把数据拷贝到unsigned char *buf;中。
我用的显示函数是
StretchDIBits(hdc,
0, 0, WIDTH, HEIGHT,
0, 0, w, h,
buf, &m_OutInfo, DIB_RGB_COLORS, SRCCOPY);
如果不对图像处理这样显示就没有问题的,但是如果对图像处理后显示就不正确了,我就是想把它变成灰度图像,但是我显示的图像不是灰度图像,最后我将buf中的
for(i=0;i<h;i++)
for(j=0;j<w;j++)
{
buf[i*3*w+j*3+0]=125;
buf[i*3*w+j*3+0]=125;
buf[i*3*w+j*3+0]=125;
}
但是显示的颜色是彩色的,按道理图像应该是灰度为125的灰度图像呀,怎么可能是有颜色的呢?请各位高手指点一下!感激不尽!
通过memcpy((void*)(buf),lpVHdr->lpData,lpVHdr->dwBufferLength);把数据拷贝到unsigned char *buf;中。
我用的显示函数是
StretchDIBits(hdc,
0, 0, WIDTH, HEIGHT,
0, 0, w, h,
buf, &m_OutInfo, DIB_RGB_COLORS, SRCCOPY);
如果不对图像处理这样显示就没有问题的,但是如果对图像处理后显示就不正确了,我就是想把它变成灰度图像,但是我显示的图像不是灰度图像,最后我将buf中的
for(i=0;i<h;i++)
for(j=0;j<w;j++)
{
buf[i*3*w+j*3+0]=125;
buf[i*3*w+j*3+0]=125;
buf[i*3*w+j*3+0]=125;
}
但是显示的颜色是彩色的,按道理图像应该是灰度为125的灰度图像呀,怎么可能是有颜色的呢?请各位高手指点一下!感激不尽!