學習完基礎的圖像演算法,開始接觸OpenCV學習: 灰度圖中,一個像素點上的灰度級需要一個位元組(byte,2^8,8 bit)進行存儲,此時的灰度圖是二維的。而當我們需要轉換為彩色圖時,即三維,便會產生顏色通道(Channel),這個時候,一個像素點上的灰度級便會需要三個位元組來進行存儲。 可以藉助笛卡 ...
學習完基礎的圖像演算法,開始接觸OpenCV學習:
灰度圖中,一個像素點上的灰度級需要一個位元組(byte,2^8,8 bit)進行存儲,此時的灰度圖是二維的。
而當我們需要轉換為彩色圖時,即三維,便會產生顏色通道(Channel),這個時候,一個像素點上的灰度級便會需要三個位元組來進行存儲。
可以藉助笛卡爾坐標系來幫助理解:
我們開始實操:
1、生成一個隨機的原始位元組;
2、將隨機位元組轉換為一維數組;
3、轉換為灰度圖(即二維數組)然後保存;
4、轉換為彩色圖(即三維數組)然後保存;
Code:
1 import cv2 2 import numpy 3 import os 4 5 # 生成隨機字元,然後轉換成位元組數組 6 rb = bytearray(os.urandom(12)) 7 print(rb) 8 9 # 將位元組數組轉換成numpy數組 10 fn = numpy.array(rb) 11 print(fn) 12 13 # 轉換成灰度圖,即二維數組 14 gi = fn.reshape(3, 4) 15 print(gi) 16 # cv2.imwrite('2D.png', gi) 17 18 # 轉換成彩色圖,即三維數組,此時的展示的面是 xy 構成的 19 bi = fn.reshape(1, 4, 3) 20 print(bi) 21 # cv2.imwrite('3D_xy.png', bi) 22 23 # 此時的展示的面是 yz 構成的 24 yz = numpy.uint8(bi[0, :, :]) 25 # cv2.imwrite('3D_yz.png', yz) 26 print(yz)
至此就完成了原始位元組轉換成圖像的步驟。
參考書籍:OpenCV 4電腦視覺:Python語言實現