最近作業需要需要把YUV的影像轉換成rgb的彩色圖方便查看,查閱了很多資料基本上都是說的不太清晰,導致像我這樣的小白無法準確的定位代碼的正確性,只能試來試去的比較浪費時間,說的如果有不對地方的話請私信指正(首次寫博客寫的不好大家多多體諒)
如果要轉換影像格式,首先要了解影像的組成,
yuv影像有很多格式需要知道具體的是那種格和要轉換成正確的解析度(要不然后面轉換影像的話yuv影像會沒有顏色,即使轉換成功也是黑白的影像,解析度如果不對的話也會導致影像有問題,所以要轉之前一定要弄清除這兩點)
yuv的影像格式我就不在這里細說了大家自行查閱相關資料,我直接就上代碼了
因為yuv的格式比較原始所以這里我用的是python3的cv2的第三方庫和numpy這兩個庫,
這里我就以gray8,NV21,420P作為本次的樣例(這里再補充一點就是要知道影像的解碼bit數,位數不對的話也會導致影像轉換失敗或者轉換成功的影像有問題)
首先的話就是引入相應的第三方庫

這里大家只需要引入自己需要的包就行了
步驟分為,打開圖片->決議圖片->像素點重組->生成新的圖片,
打開圖片的話我用的是
按照指定bit位數決議圖片(這里我用的是8bit格式決議的,需求不一樣的根據自己的方法決議就行了)

重點來了,這里我做了一下格式判斷,不同格式根據不同的方法進行重組,
size函式是獲取像素點數量的
cv2.reshape(())是根據你填寫的寬高進行像素點重組成你想要的矩陣格式(也就是像素,例如 640 480這樣的,因為不是所有的影像都是按照格式來的,還是一些不規范的比如640 400的,所以需要提前知道解析度)
cv2.cvtColor()影像 顏色空間轉換,根據對應的圖片格式進行色彩渲染,cv2.cvtColor這個第三方庫都有方法,大家可以自己去看看需要什么樣格式的顏色渲染,

cv_format = cv2.COLOR_YUV2BGR_NV21 cv_format = cv2.COLOR_YUV2BGR_I420
以上這兩個是我常用的顏色渲染的引數
如果不加顏色渲染的話就是黑白的影像
大概的影像轉換就是這樣的,簡單的說就是打開圖片獲取影像像素點然后進行寬高的像素點重組得到一張黑白的影像,在進行是否要加顏色就完成了,
本次說的就是以上內容了,有不明白的或者需要代碼的請私信我或者發郵件18610625941@163.com,看到我會及時回復
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296784.html
標籤:其他
上一篇:Learning to Recover 3D Scene Shape from a Single Image
下一篇:OpenCV-懷舊色濾鏡
