以最簡單的4 x 5三通道圖像爲例,其在內存中Mat類型的數據組織形式以下:python
每一行的每一列像素的三個通道數據組成一個一維數組,一行像素組成一個二維數組,整幅圖像組成一個三維數組,即:shell
Mat.data[4, 5, 3] = [數組
[[B0, G0, R0],[B1, G1, R1],[B2, G2, R2],[B3, G3, R3],[B4, G4, R4]], spa
[[B5, G5, R5],[B6, G6, R6],[B7, G7, R7],[B8, G8, R8],[B9, G9, R9]], blog
[[B10, G10, R10],[B11, G11, R11],[B12, G12, R12],[B13, G13, R13],[B14, G14, R14]], 內存
[[B15, G15, R15],[B16, G16, R16],[B17, G17, R17],[B18, G18, R18],[B19, G19, R19]]get
]it
咱們經過python單獨訪問每一個通道的數據能夠採用切片(Slice)操做的方是:import
img_blue = img_mat[:, :, 0]numpy
img_green = img_mat[:, :, 1]
img_red = img_mat[:, :, 2]
上述代碼有些抽象,啓動python咱們模擬操做一下,控制檯輸入python,進入shell,導入numpy(import numpy as np),而後輸入以下語句:
a = np.arange(36).reshape(4, 5, 3)
咱們模擬了一個4行、3列、3通道的圖像數據,其內容以下:
咱們隨便取一通道的數據,好比BGR三通道的G通道,也就是第2個通道,繼續在python的shell界面輸入以下指令:
a[:, :, 1]
數據以下:
上述數據是一個二維數組:每一行的G通道數據組成一個一維數組,整幅圖像的G通道數據組成一個二維數組。