【图像处理基础】灰度图raw8格式转NV12格式
前言
转换原理
* 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; }
使用memset函数对数组赋值不同数据类型(unsigned char/char/int)的问题:
这部分代码没有内存泄漏。在函数中,我们只是简单地将一个数组的值复制到另一个数组中,并没有使用动态分配的内存。因此,我们不需要手动释放任何内存。
参考
各美其美,美美与共,不和他人作比较,不对他人有期待,不批判他人,不钻牛角尖。
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/