[英]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.