在图像处理与计算机视觉领域,拿到一张图片后,首先需要明确其关键参数:图像尺寸、通道数以及总像素数,这些数据直接决定后续的处理方向。之前我们使用 cv2.imread()
获取图片宽高和通道数
要获取图像的维度信息,OpenCV 的 shape 属性是最直接的入口,调用后即可返回宽度、高度和通道数。
import cv2
img = cv2.imread('德育处主任.jpeg')
height, width, channels = img.shape
print(f'图片高度: {height}')
print(f'图片宽度: {width}')
print(f'图片通道数: {channels}')
拿一张 1280×1280 的彩色图像来测试,运行代码后终端会输出:
图片高度: 1280
图片宽度: 1280
图片通道数: 3
需要注意:如果加载的是灰度图像,shape 只会返回高度和宽度两个值,通道数缺失。此时可以通过检查 shape 的长度来判断图像类型:
if len(image.shape) == 2:
height, width = image.shape
print("这是灰度图")
else:
height, width, channels = image.shape
print("这是彩色图")
获取像素数据类型
像素数据的类型同样关键,OpenCV 默认读取的彩色图像像素数据类型为 uint8(取值范围 0–255)。通过 NumPy 的 dtype 属性即可轻松获取:
pixel_dtype = img.dtype
print(f"像素数据类型:{pixel_dtype}")
还是那张示例图,输出结果如下:
像素数据类型:uint8
计算图片大小(总像素数)
已知图像的宽度、高度和通道数后,可通过 size 属性快速计算总像素数:
total_pixels = img.size
print(f"图片的总像素数:{total_pixels}")
1280×1280 的彩色图,每个像素有 3 个通道,结果自然是:
图片的总像素数:4915200
1280 × 1280 × 3 正好等于 4,915,200。如需计算单通道像素数,只需将宽度乘以高度即可。
