关于c#调用usb摄像头的回调码流解码问题

本文介绍了作者在使用C#调用电脑USB摄像头时遇到的码流解码问题。通过分析FrameCallBack中的VideoData码流结构,发现其为640*480分辨率,排列方式为YCbYCr。根据YCbYCr转换RGB的公式,作者编写了解码函数以处理摄像头捕获的图像数据。
摘要由CSDN通过智能技术生成

最近,想用c#调用电脑摄像头,参考了“赤色火焰”的博客http://www.cnblogs.com/mgod/archive/2008/06/18/1224351.html,但对码流解码方面的介绍没有,上网搜也没有找到。于是,开始分析FrameCallBack中的VideoData的码流结构发现其分辨率是640*480,排列方式是YCbYCr,一行的排列是Y0CbY1CrY2CbY3CrY4CbY5Cr...,采用从左到右 从上到下的排列方式。其中YCbYCr表示左右相邻的两个像素,这两个像素的Y值不同,共用Cb和Cr,例如:Y0CbY1Cr解码是应为:Y0CbCr、Y1CbCr。

根据,YCbYCr转RGB公式:

                               r = 1.164 * (y - 16) + 1.596 * (cr - 128);
                               g = 1.164 * (y - 16) - 0.391 * (cb - 128) - 0.813 * (cr - 128);
                               b = 1.164 * (y - 16) + 2.018 * (cb - 128);

编写解码函数,再调用解码函数

	private double[] ycbcrToRGB(byte y, byte cb, byte cr)
        {
            double[] rgb = new double[3];
            rgb[0] = 1.164 * (y - 16) + 1.596 * (cr - 128);
            rgb[1] = 1.164 * (y - 16
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值