保存图片的坑:cv2.imread和Image.open,还有image.save和cv2.imwrite对图像处理的格式不一样

本文记录了在使用Python进行图像处理时,遇到的cv2和PIL库之间的互操作问题。cv2.imread加载的图像无法直接转为RGBA格式,需要通过Image.open来实现。同时,两个库的保存函数不能混用,cv2.imread读取的图像应使用cv2.imwrite保存,而Image.open则需用image.save。在保存无坐标轴的图片时,需结合plt.savefig并关闭坐标显示。此外,plt.show()的位置会影响保存的图像内容。文章还提到了image.imsave函数,但未深入探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调了个小程序调了三天,也是怪自己基础知识不牢,写篇文章记录下。
cv2.imread(img)读进来的图用cv2.imwrite(path)保存。
但cv2.imread(img)读进来的图不能直接转化为RGBA格式,只能通过Image.open传入的图才可以直接转化为RGBA。Image.open读进来的图只能用image.save保存。
第一个原因是cv2函数和pil库的读入和保存函数不能混合使用,cv2.imread读入的是图片,而Image.open读进来的是数组。

还有如果你要保存没坐标刻度图片用plt.savefig,那这三句话就得全写上。
plt.imshow(img,cmap=plt.cm.gray)#这句不写保存的就是空图,cmap=plt.cm.gray我忘了什么作用了,好像对保存没用。
plt.axis(‘off’)#这句不写保存的就是有刻度的
plt.savefig(output_dir + ‘/’ + img_paths.split(‘/’)[-1] + “.tiff”)#保存的路径+格式
还有一种情况就是将plt.show()写在保存方法plt.savefig(“matrix.png”)的后面,保存的就不是空图了。

plt.savefig("matrix.png")
        plt.show()

还有一个image.imsave()目前还没细研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值