【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)

问题解决。

你可能感兴趣的:(python,遇到的各种问题汇总,python)