我有一个图片目录,我正在尝试调整大小。但是在这个过程中我不想将它们保留在目录中,因此我试图用相同的名称重写它。以下是我的代码:
import os
from os.path import basename
from imutils import paths
import imutils
import argparse
import cv2
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
help="path to the input image")
args = vars(ap.parse_args())
for (i, imagePath) in enumerate(paths.list_images(args['image'])):
image = cv2.imread(imagePath)
fil = basename(imagePath)
filname = os.path.splitext(fil)[0]
newimage = imutils.resize(image, width=500)
cv2.imwrite(filname+'.jpg', newimage)
当我尝试使用cv2.imshow进行调整前和调整后,我可以得到显示。同样,当我打印fil和filname时,它会被正确打印。但是,图像不会被覆盖。
答案 0 :(得分:0)
如果您想使用原始名称和扩展名来覆盖它们,则无需像在此行中那样重建路径
filname = os.path.splitext(fil)[0]
相反,您可以继续使用imagePath
随附的变量imutils.paths
,这是已经覆盖的确切路径。
cv2.imwrite(imagePath, newimage)
但是,如果您确实需要像其他文件一样拍摄其他文件类型的图像并将其转换为.jpg
,那么在编写example.png
时就不会覆盖example.jpg
,因此您需要删除example.png
。
通过上述更改,代码将在系统上以新尺寸覆盖图像。