OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...
以最簡單的4 x 5三通道圖像為例,其在內存中Mat類型的數據組織形式如下:
?
每一行的每一列像素的三個通道數據組成一個一維數組,一行像素組成一個二維數組,整幅圖像組成一個三維數組,即:
Mat.data[4, 5, 3] = [
[[B0, G0, R0],[B1, G1, R1],[B2, G2, R2],[B3, G3, R3],[B4, G4, R4]],
[[B5, G5, R5],[B6, G6, R6],[B7, G7, R7],[B8, G8, R8],[B9, G9, R9]],
[[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]]
]
我們通過python單獨訪問每個通道的數據可以采用切片(Slice)操作的方是:
img_blue?? = img_mat[:, :, 0]
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通道數據組成一個二維數組。
posted on 2018-09-29 21:09 Neo-T 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/neo-T/p/9732974.html
總結
以上是生活随笔為你收集整理的OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 弯弯的小河是什么歌?
- 下一篇: 一目了然了解JAVA集合体系