AVI图像数据的解码问题(100分)

  • 主题发起人 主题发起人 jill
  • 开始时间 开始时间
J

jill

Unregistered / Unconfirmed
GUEST, unregistred user!
我已得到了AVI文件的帧的数据,但是好像不是位图的压缩数据,那位知道如何
解码请告知,小弟在这里谢谢了。
 
我也碰到了您相似的问题。通过视频卡捕获AVI,通过视频公司提供的函数捕获了
一帧,想保存成BMP文件。我看捕获的pchar型的内存区的数据是对的,但图象就是不对。
比如AVI的图象是全BLUE的(24位色),内存区的数据是(192,0,0,192,0,0,192,0,0....)
但是图象是类似百叶窗的一条一条才色相间的。



 
我也是刚刚知道:

var
info: TBitmapInfo;
bmpCap: TBitmap;
begin

result := 0;
capGetVideoFormat(hWnd, @info, sizeof(TBitmapInfo));
bmpCap := TBitmap.Create;
FrameToBitmap(bmpCap, lpvhdr^.lpData, info);
........
bmpCap.Free;
end;



procedure FrameToBitmap(Bitmap: TBitmap;
FrameBuffer: pointer;
BitmapInfo: TBitmapInfo);
begin

with Bitmapdo

begin

Width := BitmapInfo.bmiHeader.biWidth;
// New size of Bitmap
Height := Bitmapinfo.bmiHeader.biHeight;
setDiBits(canvas.handle, handle, 0, BitmapInfo.bmiHeader.biheight,
FrameBuffer, BitmapInfo, DIB_RGB_COLORS);
end;

end;

 
有的是按RGB格式 存储的. 有的则是 YUV 存储的.
 
TO xwings
我捕获的的图象格式是rgB的像素阵列
而且我的代码和cqbaobao的类似。但我是用CREATEDIBITMAP()函数.
 
TO xwings:
急用:什么情况是RGB,什么情况是YUV?
YUV在程序里怎么处理呢?
 
有的采集卡支持RGB色彩的. 其中有 RGB16(有555,565两种) RGB24 RGB32 有的是不知道RGB的.

YUV 我也不是很懂,建议到网上用这个关键词搜索一下.YUV 有个转换公式的, 可以转换成RGB色彩.
这个网站上有的.
http://www.efg2.com/Lab/index.html
 
我也有个问题,就是在delphi中avi调用时,是不是要use vfw.pas?
好像还有一个ole2的,是什么?[:D]
 
AVI图像数据的又如何压缩呢?
 
先得到Forucc数据,再选择相应的解码器
 
To LeeChange:
能不能再详细谈一谈,我搞了好长时间,但搞不出来,帮帮我。
我的email:robin_lo@163.com
 
后退
顶部