cv2与PIL的一点不同

最近在dataloader的时候,读取图片需要用到cv2 和PIL的转换,所以在读取图片的时候,发现了一些不同之处,感觉还挺绕的,mark一下。

cv2:

cv2.imread()

读取出来的直接是np的array.

img.shape = [h,w,c] 
cv2.resize(size=(w,h))

此处的图像尺寸是有细微差别的,应该在官方的docs上是可以查到的:

height, width = img.shape[:2] res = cv.resize(img,(2 * width, 2 * height),
interpolation = cv.INTER_CUBIC)

PIL:

img = Image.open()
img = np.array(img),

需要多一步转化为np的array.
同时作为PIL的对象,

img.size=[w,h] 

但是当转化为np后,

img.shape = [h,w,c]

在数组顺序上是与cv2相同的,但是在c的顺序上是有细微区别的:
cv2 -> PIL : BGR -> RGB

一些疑问

此外,PIL的resize是对图像划定部分进行裁剪,而不是像cv2一样进行插值,目前所知的可以像cv2一样对图像进行插值的就是torch的pooling操作。

有没有大神也可以指导一下其他可以实现等效resize的简单方法 :)

你可能感兴趣的:(计算机视觉,深度学习,opencv)