cv2与PIL的一点不同

本文讨论了在使用cv2和PIL读取及处理图像时的差异,包括图像维度顺序和resize方法。cv2加载的图像通道顺序为BGR,而PIL则是RGB。在resize方面,cv2采用插值,PIL默认裁剪。提到PIL转换为np.array后的形状与cv2一致,但需要注意颜色通道顺序。文章还提及了torch的pooling操作可类似实现插值,并求教于社区寻找等效于cv2.resize的简单方法。
摘要由CSDN通过智能技术生成

最近在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的简单方法 :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值