【python】cv2.imwrite始终无法保存图片的问题(win系统和Linux系统的路径差异)

原本在服务器linux系统运行过的测试程序,我把它放到自己电脑的win系统上后却一直没能得到想要的结果。

原始代码如下(只截取了关键部分):

filenames = sorted(glob.glob('./data/test_org/*.png'))
filenames = [x.split('/')[-1] for x in filenames]
cv2.imwrite('./test_results/{}_G1.png'.format(str(filenames[ix].replace('.png', ''))), g1_output_image)

作用是读取test_org文件夹下的所有图片,对于其中的任意一张图,经过处理后的结果为g1_output_image,然后保存到test_results文件夹下。

例子:./data/test_org/00000.png处理后保存为./test_results/00000_G1.png。

然而我运行了之后一直没有保存成功,最后发现问题出在glob.glob上,在WIN系统下运行得到的结果是’./data/test_org\\00000.png’,用的是两个反斜杠,导致我x.split('/')[-1]得到的是’test_org\00000.png’,那么最终会保存为./test_results/test_org\00000_G1.png,也就是说它没有保存到我想要的test_results文件夹,而是保存到了test_results的子文件夹test_org,然而这个子文件夹不存在,导致我运行程序虽然不会报错但是不能成功保存图片。

修改后的代码如下,将读取的路径中的 ‘\’ 改为 ‘/’ 。

filenames = sorted(glob.glob('./data/test_org/*.png'))
filenames = [x.replace('\\', '/').split('/')[-1] for x in filenames]
cv2.imwrite('./test_results/{}_G1.png'.format(str(filenames[ix].replace('.png', ''))), g1_output_image)

问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值