摘要:本文介绍并比较了cv2.imread和torchvision.io.read_img两种读取图像的方法。
引言
在通过PytTorch处理图像时,torchvision是一个强有力的工具包。而OpenCV是传统计算机视觉影响力最大的库,在Python中使用numpy对图像处理。它们都提供了读取图像的接口。
本文在实验时分别用了两者的接口读取COCO数据集中的图像,然而,COCO数据集中有彩图和灰度图,两中读图函数在处理时通道数可能不同,导致后续处理时报错。故此,本文梳理比较了二者读取图像API的不同。
torchvision.io.read_image
Pytorch处理图像的格式为Tensor,read_img函数读取图片时活得的格式便是如此,其各个维度为顺序为[‘C’, ‘H’, ‘W’],分别代表着通道数、图片高度以及宽度。
如果图片本身是黑白的,read_image读取的图片通道数C为1。除此之外,read_image读入的图像每个像素0-255整形。若希望处理范围到[0, 1]之间,则需要手动除以255,如下所示。
img = read_image(img_path) / 255.0