首页 > 其他分享 >【图像处理基础】灰度图raw8格式转NV12格式

【图像处理基础】灰度图raw8格式转NV12格式

时间:2024-01-23 11:45:58浏览次数:31  
标签:int raw8 memset char CSDN 灰度 128 格式

前言

 

转换原理

* RGB转YUV-NV12:
Y = 0.299 R + 0.587 G + 0.114 B
U = - 0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128
* YUV-NV12转RGB
R = Y + 1.402 (V - 128)  # 1.4075
G = Y - 0.34414 (U - 128) - 0.71414 (V - 128)
B = Y + 1.772 (U - 128) # 1.770
code
#include <iostream>
#include <string.h>
void raw8ToNv12(unsigned char* raw8data, unsigned char* nv12data){
    int w = 3, h = 4;
    for(int i =0; i< w*h; i++){
        nv12data[i] = raw8data[i];
    }
    memset(nv12data+w*h, 128, w*h/2);
}
int main()
{
    // int w = 3, h = 4;
    unsigned char raw8data[12] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'};
    std::cout << "raw8data: " << raw8data << std::endl;
    unsigned char nv12data[18];
    raw8ToNv12(raw8data, nv12data);
    std::cout << "nv12data: " << nv12data << std::endl; 
}
View Code

使用memset函数对数组赋值不同数据类型(unsigned char/char/int)的问题:

使用memset对数组赋值_memset数组-CSDN博客 这部分代码没有内存泄漏。在函数中,我们只是简单地将一个数组的值复制到另一个数组中,并没有使用动态分配的内存。因此,我们不需要手动释放任何内存。

参考

1. 图像格式互转_8bit灰度图转yuv-CSDN博客

2. rgb转nv12 nv12转rgb_rgba 转nv12 着色器-CSDN博客

3. 使用C++实现YUV格式图像与RGB格式图像之间相互转换_c++ yuv转rgb优化算法-CSDN博客; 4. C++中memset函数详解_c++ memset-CSDN博客; 5. TUTORIALS REFERENCE ARTICLES FORUM C++ Tutorials Reference Articles Forum Reference C library: < c; 6. std::memset - cppreference.com; 完

标签:int,raw8,memset,char,CSDN,灰度,128,格式
From: https://www.cnblogs.com/happyamyhope/p/17932780.html

相关文章

  • 时间格式化,获取最近七天时间,获取昨天,明天得时间等
    时间格式化整理优化时间类发现之前发现大部分这样写的,获取当前日期,再一个个取年,月,日,再拼接成自己想要得格式letcurDate=newDate()letyyyy=curDate.getFullYear()letmm=curDate.getMonth()+1mm=mm<10?("0"+mm):mmletdd=curDate.getDate()......
  • [office] Excel表格怎么让日期格式的数据对齐显示-
    大家都知道,Excel是非常好用的办公软件,怎么让日期格式的数据对齐显示呢,下面给大家带来详细的步骤,感兴趣的朋友不要错过了。方法1、打开待处理的表格,图示,“入职日期”这一列数据因为数据长短不一致而显得非常错乱,如何让这些日期数据对齐显示呢?2、选中所有需要处理的日期数据单元格,然......
  • Python web crawler(2)json异步加载的格式
    异步加载的特点点击“查看更多”等按钮,浏览器“刷新”按钮无反馈效果。查看浏览器点击F12的“DevTools”开发者工具,点选“网络”——“Fetch/XHR”——每点击一次“加载更多”就会出现一次网络请求点击刷新出来的“请求内容”——点击“响应”,可以看到响应的是“字典”点击标......
  • http的form表单格式请求
    Content-Type:application/x-www-form-urlencoded是一个HTTP头部中使用的媒体类型(MIMEtype),它告诉服务器消息体的格式以键值对形式进行编码,并且键值对之间用&分隔,每个键和值都用=连接。这是表单数据被编码成一个查询字符串的方式,通常用于提交HTML表单数据。当你提交一个简......
  • Centos 静态IP网卡格式
    TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"修改该项dhcp为staticIPADDR=192.168.1.129增加静态IP地址NETMASK=255.255.255.0子网掩码GATEWAY=192.168.1.1子网网关DNS1=114.114.114.114DNSDE......
  • js---格式化时间显示
    我们在做时间渲染的时候,经常会遇到需要将时间转为特定的显示方式,以下是常见的时间显示格式化方法:exportfunctionformateTime(timeStamp){timeStamp=timeStamp*1000;letdate=newDate(timeStamp);letyear=date.getFullYear();letmonth=date.g......
  • Java 如何将Excel转换为TXT文本格式
    TXT文件是一种非常简单、通用且易于处理的文本格式。在处理大规模数据时,将Excel转为TXT纯文本文件可以提高处理效率。此外,许多编程语言和数据处理工具都有内置的函数和库来读取和处理TXT文件,因此将Excel文件转换为TXT还可以简化数据导入过程。本文将介绍如何使用Java将Excel转为TX......
  • NetCore 统一格式(错误异常)
    使用方式:thrownewResponseException("未授权,操作失败"); 异常输出:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceMicro.Core.Utility{[Serializable]publicclassRe......
  • FastAPI学习-29 uvicorn 使用 log_config 参数设置 logger 日志格式
    前言FastAPI服务是通过uvicorn来提供的,日志都是uvicorn里配置的。官方文档地址:https://www.uvicorn.org/settings/#logginguvicorn的logging日志我们可以通过uvicorn.run()方式启动服务uvicorn.run("example:app",port=5000,reload=True,access_log=False)于是可以加......
  • 258-cookie格式转换(内部)
    原始的cookie格式为:key1=value1;key2=value2;.....通过一下方法:ReturnValue<string>cookiesResult=CookieChangeTools.ConvertToXQYCookieString(cookies,rootUrl);cookies=cookiesResult.Value;转换的cookie格式为:[cookieStart]key1=value1;key2=value2;.....[cookie......