根据这篇解码出yuv数据后

海思h264解码库

y,u,v数据全部存进数组内,      
 
 IntPtr y = _decodeFrame.pY;
                IntPtr v = _decodeFrame.pV;
                IntPtr u = _decodeFrame.pU;
                byte[] ys = new byte[yLength];
                Marshal.Copy(y, ys, 0, yLength);

byte[] vs = new byte[uLength];

                Marshal.Copy(v, vs, 0, uLength);
                byte[] us = new byte[uLength];
                Marshal.Copy(u, us, 0, uLength);
 
rgb转yuv转换矩阵C++,网上其他的不能用
//转换矩阵
#define MY(a,b,c) (( a*  0.2989  + b*  0.5866  + c*  0.1145))
#define MU(a,b,c) (( a*(-0.1688) + b*(-0.3312) + c*  0.5000 + 128))
#define MV(a,b,c) (( a*  0.5000  + b*(-0.4184) + c*(-0.0816) + 128))
 
 简单写个画线的函数以说明,遍历像素修改效率很低      1920为视频宽  1080p        
 
private void drawLineYUV(Point pnt1, Point pnt2, ref byte[] ys, ref byte[] vs, ref byte[] us, byte R, byte G, byte B)
{
//y1 = k x1 + b b = y1 - k x1
// y2 = k x2 + b k = (y2 - b)/ x2 k = (y2 - y1 - k x1)/ x2
//(x-x1)/(x2-x1)=(y-y1)/(y2-y1)
int x1 = pnt1.X;
int x2 = pnt2.X;
int y1 = pnt1.Y;
int y2 = pnt2.Y;
double k = ;
double b = ;
if (x1 == x2)
{
int ymin = y1, ymax = y2;
if (y1 > y2)
{
ymin = y2;
ymax = y1;
}
for (int h = ymin; h <= ymin; h++)
{
int Y = (int)(0.299 * R + 0.587 * G + 0.114 * B);
ys[h * + x1] = (byte)Y;
vs[(int)((h * + x1 * ) / )] = (byte)(int)(R * 0.5000 + G * (-0.4184) + B * (-0.0816) + );
us[(int)((h * + x1 * ) / )] = (byte)(int)(R * (-0.1688) + G * (-0.3312) + B * 0.5000 + );
}
}
else
{
int ymin = y1, ymax = y2;
if (y1 > y2)
{
ymin = y2;
ymax = y1;
}
int xmin = x1, xmax = x2;
if (y1 > y2)
{
xmin = x2;
xmax = x1;
} k = (double)(ymax - ymin) / (double)(xmax - xmin);
b = ymin - k * xmin; for (int w = xmin; w < xmax; w++)
{
for (int h = ymin; h < ymax; h++)
{
if (Math.Abs(h - k * w - b) < )
{
int Y = (int)(0.299 * R + 0.587 * G + 0.114 * B);
ys[h * + w] = (byte)Y; vs[(int)((h * + w * ) / )] = (byte)(int)(R * 0.5000 + G * (-0.4184) + B * (-0.0816) + ); us[(int)((h * + w * ) / )] = (byte)(int)(R * (-0.1688) + G * (-0.3312) + B * 0.5000 + );
}
}
}
}
}
 

最新文章

  1. wxWidgets
  2. SVN提交时响应很慢,我是这样解决的。
  3. 再谈Jquery Ajax方法传递到action 【转载】
  4. 利用AdaBoost元算法提高分类性能
  5. CentOS 基本设置
  6. Tomcat 配置 HTTPS双向认证
  7. CSS3 transition规范的实际使用经验
  8. java web 代码
  9. js+css:43种常见的浏览器兼容性问题大汇总
  10. xml(3)--dom4j实现crud操作
  11. leetcode第14题--Longest Common Prefix
  12. C#中Invoke的用法
  13. maven环境变量的配置及+eclipse的配置使用
  14. 精选 TOP45 值得学习的Python项目
  15. tkinter内嵌Matplotlib系列(二)之函数曲线绘制
  16. 【巷子】---redux---【react】
  17. Linux 双网关(电信与联通)
  18. PowerShell “execution of scripts is disabled on this system.”
  19. Generalized normal distribution and Skew normal distribution
  20. UOJ.87.mx的仙人掌(圆方树 虚树)(未AC)

热门文章

  1. MongoDB学习笔记~环境搭建
  2. mysql 安装问题
  3. Eclipse下还原删除的文件
  4. hdu-5992 Finding Hotels(kd-tree)
  5. 第7章 权限管理(2)_文件特殊权限(SUID、SGID、SBIT)
  6. ES5/标准 ECMAScript 内置对象
  7. MVC FormCollection collection
  8. J2EE,J2SE,J2ME,JDK,SDK,JRE,JVM区别
  9. Chrome firefox ie等浏览器空格&amp;nbsp;宽度不一样怎么办
  10. 浅谈 underscore 内部方法 group 的设计原理