shape[0]=图像行数
shape[1]=图像列数
shape[2]=图像通道数
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
print ('The number of lines of this image is:',Img.shape[0])
print ('The number of columns of this image is:',Img.shape[1])
print ('The number of channels of this image is:',Img.shape[2])
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
print ('The shape of this image :',Img.shape)
注意:Img.shape返回的是一个tuple,tuple=(rows,cols,channels)
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print ('该图片的行数为:',Img.shape[0])
print ('该图片的列数为:',Img.shape[1])
print ('该图片的通道数为:',Img.shape[2])
运行上述代码后,会发现程序报错:
\Traceback (most recent call last):
File "f:\Opencv\readshap.py", line 6, in <module>
print ('该图片的通道数为:',Img.shape[2])
IndexError: tuple index out of range
报错:数组下标越界;注意:灰度图的shape属性只有行数和列数,没有通道数(shape[2]),实际灰度图的通道数为1
直接读取灰度图的shape属性也可发现这一特点:
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print ('该图片的shape属性为:',Img.shape)
运行结果如下:
[Running] python -u "f:\Opencv\readshap.py"
该图片的shape属性为: (321, 481)
[Done] exited with code=0 in 0.22 seconds
size:返回图像的像素总数:行数*列数*通道数
特别注意,灰度图的通道数为1,而不是0
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
print ('该图片的size属性为:',Img.size)
运行结果如下:
[Running] python -u "f:\Opencv\readshap.py"
该图片的size属性为: 463203
[Done] exited with code=0 in 0.228 seconds
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print ('该图片的size属性为:',Img.size)
运行结果如下:
[Running] python -u "f:\Opencv\readshap.py"
该图片的size属性为: 154401
[Done] exited with code=0 in 0.208 seconds
从读取同一张图片原图形式下size属性和灰度图下size属性,也可以看出灰度图通道数为1(灰度图的size结果为原图size结果的1/3)
dtype:返回图像的数据类型,以字符串形式返回
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print ('该图片的数据类型为:',Img.dtype)
运行结果如下:
[Running] python -u "f:\Opencv\readshap.py"
该图片的数据类型为: uint8
[Done] exited with code=0 in 0.221 seconds
itemsize:单个像素的数据长度
nbytes:表示图像所占的内存空间=itemsize*size
ndim:维度,表示shape属性的长度=len(shape)
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
print('图像形状=',Img.shape) #形状,是一个tuple
print('图像维度=',Img.ndim) #维度,也是其shape属性的长度=len(shape)
print('单个数据长度=',Img.itemsize) #单个数据长度
print('图像总数据长度=',Img.size) #总长度,有多少个数据
print('图像内存占用空间=',Img.nbytes) #占用的内存空间=itemsize*size
print('图像数据类型=',Img.dtype) #数据类型,字符串形式
运行结果如下:
[Running] python -u "f:\Opencv\readshap.py"
图像形状= (321, 481, 3)
图像维度= 3
单个数据长度= 1
图像总数据长度= 463203
图像内存占用空间= 463203
图像数据类型= uint8
[Done] exited with code=0 in 0.217 seconds
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print('图像形状=',Img.shape) #形状,是一个tuple
print('图像维度=',Img.ndim) #维度,也是其shape属性的长度=len(shape)
print('单个数据长度=',Img.itemsize) #单个数据长度
print('图像总数据长度=',Img.size) #总长度,有多少个数据
print('图像内存占用空间=',Img.nbytes) #占用的内存空间=itemsize*size
print('图像数据类型=',Img.dtype) #数据类型,字符串形式
运行结果如下:
[Running] python -u "f:\Opencv\readshap.py"
图像形状= (321, 481)
图像维度= 2
单个数据长度= 1
图像总数据长度= 154401
图像内存占用空间= 154401
图像数据类型= uint8
[Done] exited with code=0 in 0.218 seconds
运行结果如下:
[Running] python -u "f:\Opencv\readshap.py"
图像形状= (321, 481)
图像维度= 2
单个数据长度= 1
图像总数据长度= 154401
图像内存占用空间= 154401
图像数据类型= uint8
[Done] exited with code=0 in 0.218 seconds