cvs.imwrite不保存照片,返回false

时间:2018-04-23 20:48:56

标签: python cv2

我有以下代码,应该是

  • 浏览所有文件
  • 收集所有属于文件夹的照片" 0"或" 1"
  • 稍微改变照片
  • 将它们放入一个新的文件夹,---所有" 0-photos"转到一个独特的文件夹。同样适用于1

这是

import cv2
import os
import random as rnd

outdir0='cancerdata\\0'
outdir1='cancerdata\\1'
readdir='sample'
j=0;
for dirs in os.listdir(readdir):
    dpath=os.path.join(readdir,dirs)
    for subdir in os.listdir(dpath): 
        fpath=os.path.join(dpath,subdir)
        for file in os.listdir(fpath):

            rfile=os.path.join(fpath,file)
            image=cv2.imread(rfile,0)
            size=rnd.randint(50,100)
            img=cv2.resize(image,(size,size),interpolation=cv2.INTER_AREA)
            print(img)
            if subdir == '0':
                wfile=os.path.join(outdir0,file)
                cv2.imwrite(os.path.join(outdir0,file),img)
            elif subdir == '1':
                wfile=os.path.join(outdir1,file)
                cv2.imwrite(os.path.join(outdir1,file),img)

它不会出错,但由于某种原因不保存任何文件。 每当我尝试通过

保存单个图像时
 cv2.imwrite(r'sample\cancerdata\1\8865_idx5_x2101_y851_class1.png',img)

我得到的只是假。

3 个答案:

答案 0 :(得分:1)

在python字符串中使用反斜杠(\)会导致意外。在上面的代码中,反斜杠产生的字符来自八进制值,该值在Windows上的文件名中无效。有关详细信息,请参阅https://docs.python.org/3/reference/lexical_analysis.html#literals

Python运行时非常满意Windows上的正斜杠(/)。使用那些。

答案 1 :(得分:0)

您要保存的文件夹可能不存在。

确保这些文件夹存在:

cancerdata\0
cancerdata\1
sample\cancerdata\1

答案 2 :(得分:0)

首先将要存储图像的目录设置为当前工作目录。然后只需简单地传递图像名称即可保存您的图像。