我试图保存图像转换成灰度后,从一个文件夹到另一个。当我运行代码时,它会将文件保存在同一文件夹中,并复制所有图像。这是我的代码,请指导我的问题所在
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(),则它将返回结果文件的完整路径,而不仅仅是文件名
这意味着在代码的这个循环中:
文件名是一个完整路径,如
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\*.png
和C:\Users\usama\Documents\FYP-Data\FYP Project Data\hamza\myfile1.png
连接在一起,这是导致错误的原因glob()
可以方便地获取所需文件的完整路径,但是必须将文件名与目录分开尝试使用
listdir()
而不是glob()
:相关问题 更多 >
编程相关推荐