提问者:小点点

OS错误:[WinError 123]文件名,目录名或卷标语法不正确


我正在尝试保存图像转换成灰度后,从一个文件夹到另一个。 当我运行代码时,它会将文件保存在同一个文件夹中,并制作所有图像的副本。 这是我的代码,请指导我的问题所在。。。

import glob
import cv2
import os
spath=r"C:\Users\usama\Documents\FYP-Data\FYP Project Data\hamza\*.png"
dpath=r"C:\Users\usama\Documents\FYP-Data\FYP Project Data\grayscale images\*.png"
files = os.listdir(spath)
for filename in glob.glob(r'C:\Users\usama\Documents\FYP-Data\FYP Project Data\hamza\*.png'):
    print(filename)
    img=cv2.imread(filename) 
    rl=cv2.resize(img, (40,50))
    gray_image = cv2.cvtColor(rl, cv2.COLOR_BGR2GRAY)
    cv2.imwrite(os.path.join(dpath,filename), gray_image)

共1个答案

匿名用户

如果您将完整路径名传递给glob.glob(),那么它将返回结果文件的完整路径,而不仅仅是文件名。

这意味着在代码的这个循环中:

for filename in glob.glob(r'C:\Users\usama\Documents\FYP-Data\FYP Project Data\hamza\*.png'):

filename是一个完整路径,例如C:\users\usama\documents\fyp-data\fyp Project data\hamza\myfile1.png

然后,在循环的后面调用cv2.imwrite(os.path.join(dpath,filename),gray_image)时,您试图将C:\users\usama\documents\fyp-data\fyp项目数据\grayscale images\*.pngC:\users\usama\documents\fyp-data\fyp项目数据\hamza\myfile1.png连接在一起,这是错误的原因。

我看不出这段代码实际上是怎么写任何文件的,不管是重复还是不重复。