用CV2把png图片改成jpg

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)

不光要看报错的内容,也要看出问题的那一行,每一个部分有没有问题

上一篇:ctfhub文件上传---文件头检查


下一篇:7z解压终端命令