[英]Similar Image shape conversion in Python and OpenCV
我是Python的新手,很難理解Python中的圖像形狀轉換。
在Python代碼中,圖像I has I.shape
ipdb> I.shape
(720, 1280, 3)
在Python中運行此命令將轉換I's shape
並存儲到h5_image
h5_image = np.transpose(I, (2,0,1)).reshape(data_shape)
其中data_shape是:
ipdb> p data_shape
(1, 3, 720, 1280)
OpenCV的輸出相似的功能是什么?
在(1, 3, 720, 1280)
,1是什么意思?
(3, 720, 1280)
和(720, 1280, 3)
(3, 720, 1280)
什么區別?
您可以在python / numpy中將圖像( I
)視為具有N個維度的矩陣。
I.shape --> (rows, cols)
I.shape --> (rows, cols, 3)
I.shape --> (rows, cols, 4)
這些是保存圖像數據的常用方法,但是當然,只要您知道如何讀取,就可以以任何喜歡的方式保存它。 例如,您可以將其作為一維矢量保持一個長矢量,還可以保留圖像的寬度和高度,因此您知道如何將其讀取為2D格式。
對於您更具體的問題:
(1, 3, 720, 1280)
僅表示您還有其他退化尺寸。 要訪問每個像素,您必須編寫I[1,channel,row,col]
。 1
是不必要的,並且不是保存圖像陣列的常用方法。 為什么要這樣做? 您要以特定格式保存嗎? (HDF5?) (3, 720, 1280)
,要獲得紅色通道,您需要編寫: red = I[0,:,:]
。 在(720, 1280, 3)
的情況下,您需要編寫: red = I[:,:,0]
(這是更常見的)。 *有些性能問題取決於您內存中圖像數據的實際排列方式,但是我認為您現在不需要關心這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.