根据这篇解码出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 + );
}
}
}
}
}
 

直接操作 SDL_Overlay YUV叠加上的像素的更多相关文章

  1. canvas上的像素操作(图像复制,细调)

    canvas上的像素操作(图像复制,细调) 总结 1.操作对象:ImageData 对象,其实是canvas的像素点集合 2.主要操作: var obj=ctx.getImageData(0,0,10 ...

  2. 详解Google Chrome浏览器(操作篇)(上)

    开篇概述 在上篇博客中详解Google Chrome浏览器(理论篇)一文中,主要讲解了Chrome 搜索引擎使用.Chrome安装和基本操作.Chrome 基本架构.多线程等原理性问题,这篇将重点讲解 ...

  3. Webservice(CXF) 、 POI(excel)操作部署到weblogic上冲突解决

    这几日把webservice和POI 操作部署到WebLogic上,问题重重,有各种冲突. 部署到tomcat上没有问题 版本: jdk:6 tomcat:6 weblogic:10.3.3 cxf: ...

  4. Java 客户端操作 FastDFS 实现文件上传下载替换删除

    FastDFS 的作者余庆先生已经为我们开发好了 Java 对应的 SDK.这里需要解释一下:作者余庆并没有及时更新最新的 Java SDK 至 Maven 中央仓库,目前中央仓库最新版仍旧是 1.2 ...

  5. 在YUV图像上根据背景色实现OSD反色

    所谓的OSD其实就是在视频图像上叠加一些字符信息,比如时间,地点,通道号等, 在图像上叠加OSD通常有两种方式: 一种是在前端嵌入式设备上,在图像数据上叠加OSD, 这样客户端这边只需解码显示数据即可 ...

  6. PHPExcel操作sae的storage上的文件

    在用PHPexcel操作excel的时候,在本地是好使的,但是把代码部署到sae就不好使了.会遇到如下问题: 文件的操作被拒绝. 这个原因就是sae上的应用文件是不允许改动的.sae提供的文件方案是使 ...

  7. [FTP] FTPClient--FTP操作帮助类,上传下载,文件,目录操作 (转载)

    点击下载 FTPClient.zip 这个类是关于FTP客户端的操作1.构造函数 2.字段 服务器账户密码3.属性4.链接5.传输模式6.文件操作7.上传和下载8.目录操作9.内容函数看下面代码吧 / ...

  8. SQL2012还原数据库操作在本地服务器上操作和用别的电脑远程连接到服务器进行操作的文件路径差异

    在数据库服务器上想还原一个数据库到某个备份文件时期的,服务器的数据库文件本身是保存在 D:\DEVDB目录 通过开发电脑上的MS manager来连接数据库服务器操作还原 虽发现文件卡项上,原始文件名 ...

  9. C# FTPClient--FTP操作帮助类,上传下载,文件,目录操作

    FROM :http://www.sufeinet.com/forum.php?mod=viewthread&tid=1736&extra=page%3D1%26filter%3Dty ...

随机推荐

  1. W3School-CSS 伪类 (Pseudo-classes) 实例

    CSS 伪类 (Pseudo-classes) 实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) ...

  2. openstack-swift云存储部署(一)

    最近因为工作的需要搭建了一套swift云存储架构 我们先来解读一下里面的技术知识点:swift服务是属于openstack中的一种组件服务,openstack中的组件服务还有keystone.Nova ...

  3. JS导出PDF插件(支持中文、图片使用路径)

    在WEB上想做一个导出PDF的功能,发现jsPDF比较多人推荐,遗憾的是不支持中文,最后找到pdfmake,很好地解决了此问题.它的效果可以先到http://pdfmake.org/playgroun ...

  4. php 上传文件

    $_FILES["file"]["name"] - 被上传文件的名称 $_FILES["file"]["type"] - ...

  5. RabbitMQ学习资源

    AMQP协议 AMQP协议介绍 AMQP协议基本概念 官方入门教程 安装文档 官方安装文档 Linux下 RabbitMQ的安装与配置 windows下安装 ubuntu下安装 RabbitMQ 集群 ...

  6. VS2015 + OpenCV 2.4.X 配置环境

    VS2015的内部编号是VC14,但现在opencv 2.4.X和最新的3.0版本只有vc12的库文件,所以这里主要简单讲如何针对vs2015配置环境. 首先按照下面的文章把环境配置好: [OpenC ...

  7. 自定义shiro的Realm实现和CredentialsMatcher实现以及Token实现

    Realm是shiro比较核心的接口,简单说它的实现类就是校验用户输入的账号信息的地方.如果想自定义实现一般的配置文件如下: <!--自定义Realm 继承自AuthorizingRealm - ...

  8. [Django]Django1.8修改MySQL已存在表的问题?

    前言:django1.8版本出现这种问题,关于标题不好命令,直接看正文问题描述! 问题描述: 在已经生成了models.py中表的情况下,更改了modes.py中的表,但是syncdb不起作用报错.于 ...

  9. hdu1521 排列组合(指数型母函数)

    题意: 有n种物品,并且知道每种物品的数量ki.要求从中选出m件物品的排数.         (全题文末) 知识点: 普通母函数 指数型母函数:(用来求解多重集的排列问题) n个元素,其中a1,a2, ...

  10. Serial Port Programming on Linux(转载)

    This is a tutorial on how to program the Serial Ports on your Linux box.Serial Ports are nice little ...