我正在嘗試使用類似的目錄["cats.jpg", "dogs.jpg", "stars.jpg"]并將它們調整為 100x100 像素,并將編輯后的檔案輸出到帶有前綴“resized_”的新目錄中,即["resized_cats.jpg", "resized_dogs.jpg", "resized_stars.jpg"]。
目前我正在獲取新目錄,但沒有檔案被寫入其中。
batch = glob.glob("files/batch/*.jpg")
for file in batch:
img = cv2.imread(file,1)
resize = cv2.resize(img, (100,100))
if not os.path.exists("files/batchOut"):
os.makedirs("files/batchOut")
cv2.imwrite(f"files/batchOut/resized_{file}", resize)
uj5u.com熱心網友回復:
能夠使用 replace() 函式更改名稱。重要的是"batch\"雙斜杠是必需的,即"batch\\"
batch = glob.glob("files/batch/*.jpg")
for file in batch:
img = cv2.imread(file,1)
resize = cv2.resize(img, (100,100))
if not os.path.exists("files/batchOut"):
os.makedirs("files/batchOut")
cv2.imwrite("files/batchOut/resized_" file.replace("files/batch\\", "" ) ".jpg", resize)
uj5u.com熱心網友回復:
您可以使用 os.path.basename 將檔案名與路徑字串隔離,如下所示:
batch = glob.glob("files/batch/*.jpg")
for file in batch:
img = cv2.imread(file,1)
resize = cv2.resize(img, (100,100))
if not os.path.exists("files/batchOut"):
os.makedirs("files/batchOut")
file_name = os.path.basename(file)
cv2.imwrite(f"files/batchOut/resized_{file_name}", resize)
uj5u.com熱心網友回復:
您可能會發現這是一種更穩健的方法。您當然只想呼叫一次makedirs:
import os
from glob import glob
import cv2
import sys
source_directory = '<your source directory>'
target_directory = '<your target directory>'
pattern = '*.jpg'
prefix = 'resized_'
dims = (100, 100)
os.makedirs(target_directory, exist_ok=True)
for filename in glob(os.path.join(source_directory, pattern)):
try:
img = cv2.imread(filename, cv2.IMREAD_COLOR)
newfile = f'{prefix}{os.path.basename(filename)}'
newfilepath = os.path.join(target_directory, newfile)
cv2.imwrite(newfilepath, cv2.resize(img, dims))
except Exception as e:
print(f'Failed to process {filename} due to {e}', file=sys.stderr)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/442580.html
