我正在从高分辨率图像生成补丁。下面的脚本在我的本地PC上运行良好,但是当我将所有图像转移到服务器并生成补丁时,这之间会出现错误。
生成32x32补丁的脚本
import os.path
import matplotlib.pyplot as plt
import os
import random
import numpy as np
import sys
from PIL import Image
from PIL import ImageFilter
cwd = os.getcwd()
print(cwd)
ori_data_dir = '/home2/multilab/Khawar/Image_Batches/Batch3/'
print(ori_data_dir)
output_path = '/home2/multilab/Khawar/Image_Batches/com_patches/'
imgNames = os.listdir(ori_data_dir)
patch_size = [32, 32]
sample_num_for_each_seq = 20
sample_idx = 0
for im_name in imgNames:
seq_path = ori_data_dir + im_name
img = Image.open(seq_path)
im_height = img.height
im_width = img.width
img_arr = np.array(img)
if len(img_arr.shape) < 3:
continue
sample_num_for_each_seq = int(im_height * im_width / patch_size[0] / patch_size[1]) * 4
for sample_id in range(sample_num_for_each_seq):
random_resize_factor = random.random() * 0.4 + 0.6 #random 0.6 - 1.0 resize
crop_size = [round(patch_size[0] / random_resize_factor), round(patch_size[1] / random_resize_factor)]
random_crop_x1 = 0 + int(random.random() * (im_width - crop_size[1] - 2))
random_crop_y1 = 0 + int(random.random() * (im_height - crop_size[0] - 2))
random_crop_x2 = random_crop_x1 + crop_size[1]
random_crop_y2 = random_crop_y1 + crop_size[0]
random_box = (random_crop_x1, random_crop_y1, random_crop_x2, random_crop_y2)
sample_array = None
randomCropPatch = img.crop(random_box)
randomCropPatch = randomCropPatch.resize(patch_size, Image.BICUBIC)
sample_out_path = output_path + im_name[0:len(im_name) - 4] + "_%04d.png" % (sample_id)
randomCropPatch.save(sample_out_path)
sample_idx += 1
if sample_idx % 10 == 0:
# break
print(sample_idx)
错误
(base) multilab@CTN-0824171555:~/Khawar$ python3
generatePatchFlickr.py
/home2/multilab/Khawar
/home2/multilab/Khawar/Image_Batches/Batch3/
Traceback (most recent call last):
File "generatePatchFlickr.py", line 57, in <module>
randomCropPatch.save(sample_out_path)
File "/home2/multilab/anaconda3/lib/python3.7/site-packages/PIL/Image.py", line 1947, in save
fp = builtins.open(filename, "w+b")
OSError: [Errno 28] No space left on device: '/home2/multilab/Khawar/Image_Batches/com_patches/5420908975_858440e4b5_b_0000.png'
(base) multilab@CTN-0824171555:~/Khawar$
“ df -i”的输出
Filesystem Inodes IUsed IFree IUse% Mounted on
overlay 16179200 2569364 13609836 16% /
tmpfs 49334187 25 49334162 1% /dev
sf-app:/icc 3260416 1871505 1388911 58% /APP2
/dev/sda1 16179200 2569364 13609836 16% /engrid/ensh
sf-home:/cloudhome/multilab 67075440640 6596266286 60479174354 10% /home2/multilab
tmpfs 49334187 1 49334186 1% /dev/shm
tmpfs 49334187 16 49334171 1% /sys/fs/cgroup
tmpfs 49334187 7 49334180 1% /proc/driver/nvidia
devtmpfs 49330051 622 49329429 1% /dev/nvidia0
tmpfs 49334187 1 49334186 1% /proc/scsi
tmpfs 49334187 1 49334186 1% /sys/firmware
tmpfs 49334187 74 49334113 1% /run
tmpfs 49334187 2 49334185 1% /run/lock
“ df -Bm -h”的输出
Filesystem Size Used Avail Use% Mounted on
overlay 243G 63G 168G 28% /
tmpfs 64M 0 64M 0% /dev
sf-app:/icc 100G 58G 43G 58% /APP2
/dev/sda1 243G 63G 168G 28% /engrid/ensh
sf-home:/cloudhome/multilab 4.9T 71G 4.9T 2% /home2/multilab
tmpfs 189G 0 189G 0% /dev/shm
tmpfs 189G 0 189G 0% /sys/fs/cgroup
tmpfs 189G 12K 189G 1% /proc/driver/nvidia
devtmpfs 189G 0 189G 0% /dev/nvidia0
tmpfs 189G 0 189G 0% /proc/scsi
tmpfs 189G 0 189G 0% /sys/firmware
tmpfs 189G 44K 189G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock