path = "D:/Research/Python/Machine_Learning/practice_4_jpg"
print(path)
for filename in os.listdir(path): #文件夹里不止一张图片,所以要用for循环遍历所有的图片
if os.path.splitext(filename)[1] == '.png': #把path这个路径下所有的文件都读一遍,如果后缀名是png,进行下一步,即imread的读取
img_path = path + '/' + filename
img = cv2.imread(img_path)
#print(img)
#print(img_path)
#print(filename.replace(".png", ".jpg"))
newfilename = filename.replace(".png", ".jpg") #用replace函数把.png换成.jpg
new_path = path + '/' + newfilename
print(new_path)
cv2.imwrite(new_path,img)
最开始报错是
cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-q3d_8t8e\opencv\modules\imgproc\src\color.cpp:182:
查到说因为路径有中文,但是我的路径完全没有中文,所以不是这个问题,但是既然到了im.write这里报错,就去看看imwrite这函数有没有用对
imwrite用法:
cv2.imwrite(filename, img)
文件名,img(图片本身)
我打印以后发现,img这个参数现实的是none,就说明一开始python就没有读到img的数据,再往前看,img = cv2.imread(img_path),问题一定处在img_path身上,我打印img_path以后发现,在path和filename之间少了一个‘/’符号,这等于把文件的路径完全变了,所以python根本没有读到数据。
imread用法:只需要在函数里放入图片的路径
img
=
cv2.imread(image_path)
不光要看报错的内容,也要看出问题的那一行,每一个部分有没有问题