C语言实现RGB packet格式转YUV(NV21)格式

2023-11-06

前言:

此函数用于RGB packet(R G B R G B······)格式转YUV的NV21格式,保存NV21图像的内存由外部申请并传入。函数的具体实现原理在这里不做介绍,对RGB格式和YUV格式不熟悉的请自行查阅资料,该函数可直接拷贝过去使用。

代码:

/*
* 输入:data--RGB的数据
* 	w--RGB图像的宽
* 	h--RGB图像的高
* 输出:yuv--转换得到的yuv数据
*/
void RgbToNv12(Uint8* data, Uint32 w, Uint32 h, Uint8* yuv)
{
    Uint32 row_bytes;
    Uint8* uv;
    Uint8* y;
    Uint8 r, g, b;
    Uint8 y_val, u_val, v_val;
   
    Uint8 * img;
    Uint32 i, j;
    y = yuv;
    uv = yuv + w * h;

    row_bytes = (w * 3 );  
    h = h & ~1;
    //先转换Y
    for (i = 0; i < h; i++)
    {   
        img = data + row_bytes * i;
        for (j = 0; j <w; j++)
        {
            r = *(img+3*j);
            g = *(img+3*j+1);
            b = *(img+3*j+2);
            if(r>=254&&g>=254&&b>=254)
            {
    	        y_val=254;
    	        *y++ = y_val;
   	        continue;
            }
           y_val = (Uint8)(((int32)(299 * r) + (int32)(597 * g) + (int32)(114 * b)) / 1000);
           *y++ = y_val;
        }
    }
    //转换uv  
    for (i = 0; i <h; i += 2)
    {
	img = data + row_bytes * i;
 	for (j = 0; j < w; j+=2)
  	{
	    r = *(img+3*j);
	    g = *(img+3*j+1);
	    b = *(img+3*j+2);
	    u_val= (Uint8)(((int32)(-168.7 * r) - (int32)(331.3 * g) + (int32)(500 * b) + 128000) / 1000);
	    v_val= (Uint8)(((int32)(500 * r) - (int32)(418.7 * g) - (int32)(81.3 * b) + 128000) / 1000);
	    *uv++ = v_val;
	    *uv++ = u_val;
	}
   }
}	         
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言实现RGB packet格式转YUV(NV21)格式 的相关文章

  • 软件测试|sqlalchemy relationship

    简介 SQLAlchemy是一个流行的Python ORM 对象关系映射 库 它允许我们以面向对象的方式管理数据库 在SQLAlchemy中 relationship 是一个重要的功能 用于建立表之间的关系 在本文中 我们将详细探讨 rel
  • 软件测试|教你如何使用Python绘制出奥运五环旗

    简介 我们之前介绍过使用turtle来绘制正多边形 但是绘制正多边形只是turtle模块最基础的使用 我们可以使用turtle模块绘制出更多不一样的精彩图形 本文就来给大家介绍一个比较简单的turtle绘图实例 绘制奥运五环旗 初始化参数
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 软件测试|使用matplotlib绘制多种柱状图

    简介 在数据可视化领域 Matplotlib是一款强大的Python库 它可以用于创建多种类型的图表 包括柱状图 本文将介绍如何使用Matplotlib创建多种不同类型的柱状图 并提供示例代码 创建基本柱状图 首先 让我们创建一个基本的柱状
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】电影院订票信息管理系统

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统电影院订票采取了人工的管理方法 但这种管理方法存在着许多弊
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 华为OD机试2024年最新题库(Java)

    我是一名软件开发培训机构老师 我的学生已经有上百人通过了华为OD机试 学生们每次考完试 会把题目拿出来一起交流分享 重要 2024年1月 5月 考的都是OD统一考试 C卷 题库已经整理好了 命中率95 以上 这个专栏使用 Java 解法 问
  • 一台java服务器可以跑多少个线程?

    一台java服务器可以跑多少个线程 一台java服务器能跑多少个线程 这个问题来自一次线上报警如下图 超过了我们的配置阈值 打出jstack文件 通过IBM Thread and Monitor Dump Analyzer for Java
  • 计算机Java项目|springboot校园台球厅人员与设备管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了

    俺滴座右铭是不在沉默中爆发 就在沉默中灭亡 一起加油学习 珍惜现在来之不易的学习时光吧 等工作之后 你就会发现 想学习真的需要挤时间 厚积薄发啦 我们知道Java是面向对象的静态型编程语言 在Java的世界里万物皆对象 但我认为是万物皆数据
  • 2024史上最全Java面试八股文(带全部答案)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 【卡尔曼滤波】具有梯度流的一类系统的扩散映射卡尔曼滤波器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章
  • 【go语言】读取toml文件

    一 简介 TOML 全称为Tom s Obvious Minimal Language 是一种易读的配置文件格式 旨在成为一个极简的数据序列化语言 TOML的设计原则之一是保持简洁性 易读性 同时提供足够的灵活性以满足各种应用场景 TOML
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 学Python,一个月从小白到大神?看你怎么学!

    Python是一门超强大而且超受欢迎的编程语言 它被用在各种领域 比如网站开发 数据分析 人工智能和机器学习 学会Python会给你创造很多职业机会 所以绝对是值得一试的 但你有没有过这样的梦想 一个月时间 从Python小白变成Pytho
  • 2024年华为OD机试真题-查找接口成功率最优时间段-Python-OD统一考试(C卷)

    题目描述 服务之间交换的接口成功率作为服务调用关键质量特性 某个时间段内的接口失败率使用一个数组表示 数组中每个元素都是单位时间内失败率数值 数组中的数值为0 100的整数 给定一个数值 minAverageLost 表示某个时间段内平均失
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • 计算机Java项目|人体健康信息管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板

随机推荐

  • 已知一个整数,如何判断这个整数是无符号的?

    前言 记录6月11日 肯哥在群里面分享的一个问题 说实话 看到题目想了半天没明白 一看答案 才发现 这题真的简单 题目 已知一个整数 如何判断这个整数是无符号的 题解 1 因为我的思路完全是错误的 我就不再此进行乱分析了 肯哥给出的提示是
  • 多维时序

    多维时序 MATLAB实现基于贝叶斯线性回归 Bayesian Regression 的多变量输入回归预测 目录 多维时序 MATLAB实现基于贝叶斯线性回归 Bayesian Regression 的多变量输入回归预测 预测效果 基本介绍
  • harbor 中 使用 push 上传镜像时候 显示 没有认证

    harbor 中 使用 upload 上传镜像时候 显示 没有认证 概述 VMware harbor 安装完成后 使用docker tag 打新的标签 然后 用docker push上传镜像的时候 显示 安全方面的错误 1 客户端显示信息
  • 数据结构知识点总结

    说明 1 本文档为作者考研准备数据结构时期所作笔记 所用资料为王道视频 2 文中少部分内容来源 王道数据结构笔记 3 文中部分图片 文字内容来源于互联网 4 文中一些示例图片由作者绘制 出现错误难以避免 如发现错误 欢迎指出 5 根据网友的
  • 在VREP的模型脚本中使用其他脚本的函数

    VREP是一款用于机器人仿真的软件 最近博主也正在使用此款软件完成机器人工控课程设计 VREP使用的是Lua语言编程的 Lua语言是嵌入式语言 十分方便简单 有C C 语言基础很容易上手 此次工控设计是关于youbot小车在迷宫中寻找随机生
  • 共识算法比较:Tendermint的BFT与EOS的dPoS

    这项技术深入研究由Chjango Unchained编写 本文比较了不同的共识系统 它们为EOS和Tendermint提供了关于每种基础技术以及它们有什么样的独特地类似证明 PoS 能力 在由单个组织运行的传统分布式系统中 信任和安全由防火
  • Windows下安装使用SVN

    Windows下安装使用SVN https www cnblogs com sns007 p 5769393 html
  • Git 学习(二)—— 工作区 — 本地仓库的操作命令

    我们要上传文件到本地仓库 不是直接拷贝进去的 而是需要通过命令一步步上传 从工作区到本地仓库分为了三步 也可以说是三个区域 目录 1 操作命令 1 git init 获取本地仓库 2 git add 工作区 暂存区 3 git commit
  • 关于distcc安装和使用

    distcc a fast free distributed C C compiler NEWS distcc 3 1 released Distcc release 3 1 is now available at Downloads Se
  • java 是怎么在中删除下拉列表_删除在一个下拉列表字段中选择的选项,并且不显示在该行中存在的其他下拉列表中不工作-jquery...

    我有一个包含多列的html表 在两列中我显示下拉列表 当用户从一个下拉列表中选择值时 选择Product1或Select Product2下拉列表 我想删除在一个下拉列表中选择的选项 并且不要在另一个下拉列表中显示该选项 下面的示例代码适用
  • Springboot 集成Druid

    Springboot 集成Druid Druid是Java语言中最好的数据库连接池 Druid能够提供强大的监控和扩展功能 本篇主要讲解一下 Springboot中如何集成 Druid 1 添加Druid依赖
  • QML 信号 槽 传递参数

    详细的C QML 的信号与槽 初学者教程 请参考该文 QML 中信号和槽之间传递参数并不需要在连接的时候特别声明 只需要将其关联在一起即可 main qml import QtQuick 2 13 import QtQuick Contro
  • flask web 01--基础入门案例

    flask web 01 基础入门案例 1 介绍 2 功能说明 3 源码分析 3 1 功能 3 2 源码 3 3 测试结果 4 注意事项 5 说明 1 介绍 最近由于需要 开始补了一些python web相关的技能 考虑到高效和简洁 就补了
  • Spring Boot 依赖注入

    Spring Boot 依赖注入 SpringBoot的实现方式基本都是通过注解实现的 跟Spring注解注入差不多 相关的常见注解有Autowired Resource Qualifier Service Controller Repos
  • 个人简历小程序

    为了熟练掌握微信小程序开发的一些基本技巧 熟悉微信小程序开发流程 特此 运用所学知识 做了一个个人简历小程序 效果图如下 代码如下 index js const app getApp Page data userInfo hasUserIn
  • Unity制作自定义消息提示框

    工作中使用软件经常会出现各种提示框 确定XXXXXX吗 选项一般是三个 是 否 取消 今天心血来潮 于是也尝试自己用unity制作一个简单的消息提示框 准备工作 首先需要搭建一个最简单的消息框界面 然后开始编写编写一个单例模式类 专门用来管
  • MySQL高级篇——事务

    一 简介 1 什么是事务 事务是由一个或多个sql语句组成一个最小的不可再分的工作单元 里面的内容要么都执行成功 要么都不成功 2 事务的ACID特性 原子性 atomicity 事务是一个不可分割的工作单元 要么全部提交 要么全部失败回滚
  • PhotoShop 之图层蒙版

    分黑色蒙版和白色蒙版 使用效果不同 黑色蒙版是表现 隐藏 当前图层的内容 是透明的 可以看到背景图层的内容 透明 白色蒙版是表示 显示 当前图层的内容 使用黑色画笔涂抹可以显示出背景图层的样子 不透明 总之记住一句话 黑色透明 白色不透明
  • 大学最应该学习的 5 门课, 毕业后大厂 Offer 直接拿到手软!

    时间如白驹过隙 我竟然已经是一名拥有 13 年编程经验的老油条了 有些自豪 因为自己从大一就开始学习的 Java 语言依然坚挺 几乎是编程语言中的霸主了 但也有些遗憾 大学的时候没有把这些计算机基础课程学好 有些甚至没有学 导致工作后有很长
  • C语言实现RGB packet格式转YUV(NV21)格式

    前言 此函数用于RGB packet R G B R G B 格式转YUV的NV21格式 保存NV21图像的内存由外部申请并传入 函数的具体实现原理在这里不做介绍 对RGB格式和YUV格式不熟悉的请自行查阅资料 该函数可直接拷贝过去使用 代