操作系统错误:[WinError 123]文件名、目录名或卷标语法不正确

2024-10-02 00:40:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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)

Tags: 代码图像importproject文件夹datapngos
1条回答
网友
1楼 · 发布于 2024-10-02 00:40:43

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

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

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

文件名是一个完整路径,如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 Project Data\grayscale images\*.pngC:\Users\usama\Documents\FYP-Data\FYP Project Data\hamza\myfile1.png连接在一起,这是导致错误的原因

glob()可以方便地获取所需文件的完整路径,但是必须将文件名与目录分开

尝试使用listdir()而不是glob()

import glob
import cv2
import os
sdir=r"C:\Users\usama\Documents\FYP-Data\FYP Project Data\hamza"
ddir=r"C:\Users\usama\Documents\FYP-Data\FYP Project Data\grayscale images"
for filename in os.listdir(sdir):
    if not filename.lower().endswith(".png"):
        continue
    print(filename)
    img=cv2.imread(os.path.join(sdir, filename))
    rl=cv2.resize(img, (40,50))
    gray_image = cv2.cvtColor(rl, cv2.COLOR_BGR2GRAY)
    cv2.imwrite(os.path.join(ddir,filename), gray_image)

相关问题 更多 >

    热门问题