H.263视频压缩(VideoNet_src源码相关)

(h.263)如果你下载了VideoNet_src源代码,运行期间如果出现内存访问错误,调试后发现是ConvertRGB2YUV(long,long,unsigned char*,unsigned int yuv);内部出现的这个错误可以考虑是摄像头采集的视频颜色深度问题,这里要求是24位的深度,否则会出错.

转自:http://blog.csdn.net/skyair624/archive/2008/08/31/2855699.aspx

我笔记本上的摄像头采集的格式为YUY2类型的,所以就在ConvertRGB2YUV的地方出错,从网上找了个YUY2转换为YUV的代码,修改了下倒是可以了,不过还是有问题,正在修改中,YUY2转换为YUV的代码如下:

BOOL YUV422To420(BYTE* pYUV, BYTE* pY, BYTE* pU, BYTE* pV, LONG lWidth, LONG lHeight)
{

int i,j;

BYTE* pYUVTemp = pYUV;
BYTE* pYUVTempNext = pYUV+lWidth*2;

for(i=0; i<lHeight; i+=2)
{
for(j=0; j<lWidth; j+=2)
{
pY[j] = *pYUVTemp++;
pY[j+lWidth] = *pYUVTempNext++;

pU[j/2] =(*(pYUVTemp) + *(pYUVTempNext))/2;
pYUVTemp++;
pYUVTempNext++;

pY[j+1] = *pYUVTemp++;
pY[j+1+lWidth] = *pYUVTempNext++;

pV[j/2] =(*(pYUVTemp) + *(pYUVTempNext))/2;
pYUVTemp++;
pYUVTempNext++;
}
pYUVTemp+=lWidth*2;
pYUVTempNext+=lWidth*2;
pY+=lWidth*2;
pU+=lWidth/2;
pV+=lWidth/2;
}

return TRUE;
}

转自:http://topic.csdn.net/u/20080616/21/82e1a489-bed8-4626-8c73-1cea83a05cdb.html

 转:YUY2(YUV) 与 RGB 格式图片的相互转换 以及 基于YUY2(YUV)的blending
http://www.zixundao.com/thread-630-1-1.html

YUV的几种格式
http://blog.csdn.net/byteman_wang/archive/2009/02/14/3890793.aspx

YUY2到YUV420的转换
http://hi.baidu.com/feibaoding/blog/item/7d40b0f49346d22cbd310948.html

VFW采集到视频帧时

     1. 如果摄像头采用的是RGB24输出的时候,在buffer中RGB三分量的排列顺序是 [B0,G0,R0,B1,G1,R1....Bn,Gn,Rn] ,可以直接采用StretchDIBits来画图,但是在画图前必须填充BITMAPINFO 信息结构体。该结构体中的内容可以从 VFW函数库中capCaptureGetSetup函数来取得一部分信息。

    2. 如果摄像头采用的是YUY2输出的话,因为StretchDIBits函数只能采用RGB的色彩空间,所以必须首先转换成RGB的数据。此时vfw回调所得buffer中的数据排列如下 [Y0 U0 Y1 V0 Y2 U1 Y3 V1] 转换函数如下
出处:http://blog.csdn.net/byteman_wang/archive/2009/02/12/3880570.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值