使用C#将RGB24转换为YUV420格式
最近使用阿里云推送本地视频数据到远端播放!需要将图像数据转换为YUV420格式的,网上大部分是C++写的,这里将代码转换为C#格式,记录如下!
1.原料准备!首先我们获得RGB原始数据,这里不能使用JPG等压缩格式图片,需要先将图片转换为RGB格式的裸数据保存!这里提供一个网站 ,可以做转换!https://convertio.co/zh/
2.转码:使用下面的代码即可转换为YUV420!有需要的同学可以试试看!
FileStream fs = new FileStream("./test.rgb", FileMode.Open);BinaryReader br = new BinaryReader(fs);int length = (int)fs.Length;byte[] yuv = br.ReadBytes((int)fs.Length);br.Close();fs.Close();//将RGB 数据转化为420后传递//1.读取RGB数据int Height = 240;int Width = 320;byte r, g, b;byte[] yuvList = new byte[Width * Height * 3 / 2]; //存储YUV数据//2.转为YUV数据 // 开始数据转换int count = 0;int ycount = 0;for (int i = 0; i < Height; i++){for (int j = 0; j < Width; j++){r = yuv[3 * (i * Width + j) + 0];g = yuv[3 * (i * Width + j) + 1];b = yuv[3 * (i * Width + j) + 2];yuvList[ycount] = Convert.ToByte(((66 * r + 129 * g + 25 * b + 128) >> 8) + 16);ycount++;// 每 4 个Y,取一个U ,一个V if (j % 2 == 0 && i % 2 == 0){yuvList[Height * Width + count] = Convert.ToByte(((-38 * r - 74 * g + 112 * b + 128) >> 8) + 128);yuvList[Height * Width * 5 / 4 + count] = Convert.ToByte(((112 * r - 94 * g - 18 * b + 128) >> 8) + 128);count++;}}}//将二进制流写入文件fs = new FileStream("./1.yuv", FileMode.OpenOrCreate);BinaryWriter bw = new BinaryWriter(fs);bw.Write(yuvList);bw.Close();fs.Close();
3.验证!本人是使用远端获取流数据解析后能看到我发送的图片来验证的!使用YUV 图片查看器!网上查找了好几个YUV 图片查看器都打不开,不知道什么问题!大家有好用的工具可以提供下!哈哈!
注意:这里我的RGB图片大小是320 * 240,原始图片和YUV图片的尺寸应该保持一致!
使用C#将RGB24转换为YUV420格式相关推荐
- 视频图像数据处理八:将rgb视频图像转换为yuv420格式视频图像
文章目录 转换公式 需要注意 函数代码 测试用例 下载 本文介绍了将rgb视频图像转换为yuv420格式视频图像的方法,附有详细的代码和图像示例.文中rgb24和yuv420文件需要使用yuv/rgb ...
- FFmpeg开发实战(五):bmp转换为jpeg格式图像
文章目录 1. bmp结构 2. bgr24转yuv420p 3. yuv420转jpeg 4. 下载 本文介绍了将bmp格式图像转换为jpeg格式图像的方法,附有详细的代码和图像示例. 1. bmp ...
- 电子书格式怎么在线转换为PDF格式
电子书格式怎么在线转换为PDF格式,现在很多朋友喜欢用PDF格式的电子书,因为其有纸质书的排版和格局,但实际生活中出现的最多的是TXT等格式的电子书,那如何将其进行转换成PDF格式的呢,下面就由小编来 ...
- java pdf 多页转换为png格式的图片
java pdf 多页转换为png格式的图片 适用于 无论pdf有多少页均可 废话不说,直接上代码 import java.awt.Graphics; import java.awt.image.B ...
- R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式、为dataframe的每一列绘制密度图和直方图(堆叠)
R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式.为dataframe的每一列绘制密度图和直方图(堆叠) 目录 R语言ggplot2可视化:应用pivot_lon ...
- 在线qmc0转换mp3工具_如何将M4A格式的音频转换为MP3格式?只需一步搞定
随着网络技术的发达,会有很多人喜欢在网上下载东西,特别是很喜欢在网上下载音乐,但是下载音乐之后发现是M4A格式?这样用起来很不方便,都喜欢MP3格式的,那么如何将M4A格式的音频转换为MP3格式?今天 ...
- MATLAB批量实现dicom转换为bmp格式
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 参考 MATLAB实现dicom转换为png格式 %%MATLAB实现dicom转换为bmp格式 clc;clear;c ...
- 如何将qlv格式倚天屠龙记转换为MP4格式
一提到金庸,那绝对是家喻户晓的名字,不仅是带给我们不少童年的欢乐和记忆,更是父辈们的偶像.他作品众多,比较熟知和经典大概有<书剑恩仇录>.<射雕英雄传>.<神雕侠侣> ...
- python matplotlib模块画出的图像转换为.tiff格式
利用python matplotlib模块(python3.7.1)画出的图表暂不支持直接导出.tiff格式的图片,但是可以导出eps, pdf, pgf, png, ps, raw, rgba, s ...
- 将widerface标注转换为VOC格式
验证工具代码: https://github.com/wondervictor/WiderFace-Evaluation 将widerface标注转换为VOC格式 原文:https://blog.cs ...
最新文章
- 法大大刘谦:法务智能化创新实践与行业趋势
- 阿里云短信发送触发天级流量及解决办法
- 兄弟||弟兄,以前看过一个“母亲”,现在是“弟兄”,感人!
- 朴素贝叶斯算法详解及python代码实现
- tomcat修改端口号与eclipse中的tomcat保持一致
- Spring IOC容器-注解的方式
- Docker轻量级管理工具Portainer
- PG基于repmgr实现自动和手动故障切换
- HDU 2588 GCD 【Euler + 暴力技巧】
- 敏捷测试与普通测试的区别
- java中eq、ne、gt、lt、ge、le分别代表含义
- 37、我的C#学习笔记3
- java读取txt文件字符串_java读取txt文件,对字符串进行操作后导出txt文件
- 使用Hbase Shell和Java API分别进行Hbase的增删改查操作
- 基层群众工作存在的问题_联系服务群众方面存在的问题及原因
- 【渝粤题库】陕西师范大学200521 普通语言学
- k8s pod控制器详解(ReplicaSet、Deployment、Horizontal Pod Autoscaler)
- 分屏演示PPT,你可同时看见幻灯片备注信息
- 写500字关于漫威英雄的论文
- python 股市 无风险套利_Python期货期权无风险套利监控升级版
热门文章
- Stimulsoft Reports.Web 2022.2.3 Crack
- 谷歌插件firebug和xpath下载,并解决包括拖拽无法安装、提示“组件无法安装 未通过验证”等问题
- 第一代计算机硬件逻辑主要采用,第一代计算机的硬件逻辑主要采用电子管,程序设计语言采用BASIC语言...
- wshShell.SendKeys模拟键盘操作
- win7我的计算机无法搜索,win7搜索功能无法正常使用的有效解决方法
- SIM900A常用指令
- 【UE4】解决局域网联机游戏连接不上的问题
- linux 搜狗输入法包名,搜狗输入法
- 为什么acdsee服务器怎在运行,为何打开网页时会出现安装acdsee 5.0.1 powerpack
- 什么是shapefile文件