【圖像處理基礎(chǔ)】灰度圖raw8格式轉(zhuǎn)NV12格式
前言
轉(zhuǎn)換原理
* RGB轉(zhuǎn)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轉(zhuǎn)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函數(shù)對(duì)數(shù)組賦值不同數(shù)據(jù)類型(unsigned char/char/int)的問題:
這部分代碼沒有內(nèi)存泄漏。在函數(shù)中,我們只是簡(jiǎn)單地將一個(gè)數(shù)組的值復(fù)制到另一個(gè)數(shù)組中,并沒有使用動(dòng)態(tài)分配的內(nèi)存。因此,我們不需要手動(dòng)釋放任何內(nèi)存。
參考
1. 圖像格式互轉(zhuǎn)_8bit灰度圖轉(zhuǎn)yuv-CSDN博客;
2. rgb轉(zhuǎn)nv12 nv12轉(zhuǎn)rgb_rgba 轉(zhuǎn)nv12 著色器-CSDN博客;
各美其美,美美與共,不和他人作比較,不對(duì)他人有期待,不批判他人,不鉆牛角尖。
心正意誠(chéng),做自己該做的事情,做自己喜歡做的事情,安靜做一枚有思想的技術(shù)媛。
版權(quán)聲明,轉(zhuǎn)載請(qǐng)注明出處:http://www.rzrgm.cn/happyamyhope/
心正意誠(chéng),做自己該做的事情,做自己喜歡做的事情,安靜做一枚有思想的技術(shù)媛。
版權(quán)聲明,轉(zhuǎn)載請(qǐng)注明出處:http://www.rzrgm.cn/happyamyhope/
posted on 2024-01-23 11:33 鵝要長(zhǎng)大 閱讀(309) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)