Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 操作系统错误:[WinError 123]文件名、目录名或卷标语法不正确_Python_Opencv - Fatal编程技术网

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

Python 操作系统错误:[WinError 123]文件名、目录名或卷标语法不正确,python,opencv,Python,Opencv,我试图保存图像转换成灰度后,从一个文件夹到另一个。当我运行代码时,它会将文件保存在同一文件夹中,并复制所有图像。这是我的代码,请指导我的问题所在 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 ima

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

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)

如果将完整路径名传递给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\u image)
时,您尝试将
C:\Users\usama\Documents\FYP Data\FYP Project Data\grayscale images\*.png
C:\Users\usama\Documents\FYP Data\FYP Project Data\hamza\myfile1.png
,这就是你犯错误的原因

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

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


谢谢你@johngordon。。。你能解释一下我如何删除这个错误,以便在转换后将图像保存到其他文件夹中吗。另外,我是Python新手,所以这就是为什么我感到困惑的原因……谢谢您的帮助……但似乎有一个问题,当我运行代码时,它在第11行给出了语法错误`rl=cv2.resize(img,(40,50))`。当我删除这一行或对其进行注释时,它会在下一行12上给出语法错误。会有什么错误,先生…@johngordonwhoops,
imread
行有一个额外的左括号。我修好了。
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)