imagename='img/Sheer_Pleated-Front_Blouse/img_00000001.jpg' 第二个‘/’后是文件名,前面其他的内容是文件路径,如果使用split()拆分后,变成了列表元素,怎么组合成路径名
时间: 2024-03-25 11:39:31 浏览: 60
如果你使用 `split()` 方法将路径字符串按照 '/' 分割成一个列表,那么可以使用 `/` 连接符将列表中的元素拼接成一个完整的路径字符串。具体代码如下:
```
imagename = 'img/Sheer_Pleated-Front_Blouse/img_00000001.jpg'
# 将 imagename 按照 '/' 分割成一个列表
path_list = imagename.split('/')
# 将列表中的元素拼接成一个完整的路径字符串
path_str = '/'.join(path_list[:-1])
# 拼接矩形图像保存的路径和文件名
rectangle_path = os.path.join(path_str, image_name.split('/')[-1])
```
这里先将 `imagename` 按照 '/' 分割成一个列表 `path_list`,然后使用 `/` 连接符将列表中的除最后一个元素外的其他元素拼接成一个完整的路径字符串 `path_str`。最后使用 `os.path.join()` 方法将 `path_str` 和图片实际文件名拼接成矩形图像保存的路径和文件名 `rectangle_path`。
相关问题
from bm3d import bm3d_rgb from experiment_funcs1 import get_experiment_noise, get_psnr, get_cropped_psnr from PIL import Image import argparse import os import torch import numpy as np from torchvision.utils import save_image def main(): imagename = './test_image1/(1271).jpg' save_dir = 'test_result' save_path = 'noise' y = np.array(Image.open(imagename)) / 255 noise_type = 'g3' noise_var = 0.02 seed = 0 noise, psd, kernel = get_experiment_noise(noise_type, noise_var, seed, y.shape) z = np.atleast_3d(y) + np.atleast_3d(noise) y_est = bm3d_rgb(z, psd) psnr = get_psnr(y, y_est) print("PSNR:", psnr) y_est = np.minimum(np.maximum(y_est, 0), 1) z_rang = np.minimum(np.maximum(z, 0), 1) z_rang = torch.from_numpy(np.transpose(z_rang, (2, 0, 1))).float() y_est = torch.from_numpy(np.transpose(y_est, (2, 0, 1))).float() denoise_img_path = os.path.join(save_dir, 'denoised.jpg') save_image(y_est, denoise_img_path) noise_img_path = os.path.join(save_path, 'noise.jpg') save_image(z_rang, noise_img_path) if __name__ == '__main__': main()改为对灰度图处理
可以将代码中的`bm3d_rgb`函数改为`bm3d`函数,同时将读入图像的方式改为读入灰度图像即可。具体代码如下:
```
from bm3d import bm3d
from experiment_funcs1 import get_experiment_noise, get_psnr, get_cropped_psnr
from PIL import Image
import argparse
import os
import torch
import numpy as np
from torchvision.utils import save_image
def main():
imagename = './test_image1/(1271).jpg'
save_dir = 'test_result'
save_path = 'noise'
y = np.array(Image.open(imagename).convert('L')) / 255
noise_type = 'g3'
noise_var = 0.02
seed = 0
noise, psd, kernel = get_experiment_noise(noise_type, noise_var, seed, y.shape)
z = y + noise
y_est = bm3d(z, psd)
psnr = get_psnr(y, y_est)
print("PSNR:", psnr)
y_est = np.minimum(np.maximum(y_est, 0), 1)
z_rang = np.minimum(np.maximum(z, 0), 1)
z_rang = torch.from_numpy(z_rang).unsqueeze(0).float()
y_est = torch.from_numpy(y_est).unsqueeze(0).float()
denoise_img_path = os.path.join(save_dir, 'denoised.jpg')
save_image(y_est, denoise_img_path)
noise_img_path = os.path.join(save_path, 'noise.jpg')
save_image(z_rang, noise_img_path)
if __name__ == '__main__':
main()
```
imageName = re.findall('[^/]+$', self.fileName[0]) name, _ = str(imageName[0]).split('.') FOM_Module = hub.Module(name="first_order_motion") FOM_Module.generate(source_image="{}".format(self.fileName[0]), # 输入图像 driving_video="{}".format(self.fileName[1]), # 输入驱动视频 ratio=0.4, image_size=256, output_dir=f'{self.output_dir}/', # 输出文件夹 filename=f'{name}.mp4', # 输出文件名 use_gpu=False)实时显示此段代码进度
如果你想实时显示代码进度,可以使用tqdm库。你可以在代码中添加以下代码:
```
from tqdm import tqdm
# 将FOM_Module.generate()函数包装在tqdm()中
for _ in tqdm(FOM_Module.generate(source_image="{}".format(self.fileName[0]), # 输入图像
driving_video="{}".format(self.fileName[1]), # 输入驱动视频
ratio=0.4,
image_size=256,
output_dir=f'{self.output_dir}/', # 输出文件夹
filename=f'{name}.mp4', # 输出文件名
use_gpu=False)):
pass
```
这将在命令行中以进度条的形式显示代码运行进度。
阅读全文