目的是为跑pix2pix图像补全代码制作数据集
需要完成的效果是从
调整成
就是原图调整成256 * 256 像素大小之后
在中间挖一个80 * 80像素大小的空白
然后再把两个图像左右拼接起来
有一个文件夹的这样的图片需要处理
调整大小代码
from PIL import Image
import os.path
import glob
def convertjpg(jpgfile,outdir,width=256,height=256):
img=Image.open(jpgfile)
try:
new_img = img.resize((width, height), Image.BILINEAR)
if new_img.mode == 'P':
new_img = new_img.convert("RGB")
if new_img.mode == 'RGBA':
new_img = new_img.convert("RGB")
new_img.save(os.path.join(outdir, os.path.basename(jpgfile)))
except Exception as e:
print(e)
for jpgfile in glob.glob("C:/Users/86152/OneDrive/桌面/result/*.png"):
# print(jpgfile)
convertjpg(jpgfile,"C:/Users/86152/OneDrive/桌面/result1")
调整大小代码
from PIL import Image
import os.path
import glob
import os
from matplotlib import pyplot as plt
im_path = "C:/Users/86152/OneDrive/桌面/1.jpg"
dir_path= "C:/Users/86152/OneDrive/桌面/result1"
files= os.listdir(dir_path)
im1 = Image.open(im_path)
for file in files:
im2 = Image.open("C:/Users/86152/OneDrive/桌面/result1/"+file)
im2.paste(im1,(88,88))
im2.save("C:/Users/86152/OneDrive/桌面/result2/"+file)
图像左右拼贴代码
import matplotlib.pyplot as plt
import skimage.io as io
import numpy as np
import os
from PIL import Image
dir_path1 = "C:/Users/86152/OneDrive/桌面/result1"
dir_path2= "C:/Users/86152/OneDrive/桌面/result2"
files= os.listdir(dir_path1)
for file in files:
im1 = io.imread(dir_path1+'/'+file) # np.ndarray, [h, w, c], 值域(0, 255), RGB
# plt.imshow(im1) #查看图片
# plt.show()
im2 = io.imread(dir_path2+'/'+file) # np.ndarray, [h, w, c], 值域(0, 255), RGB
# plt.imshow(im2)
# plt.show()
# print(im1.shape) #查看图片的大小
# print(im1.dtype) #查看数组元素数据类型
# print(im2.shape)
# print(im2.dtype)
im3 = np.zeros((256,256 + 256,3)) #横向拼接
im3[:,:256,:] = im1.copy() #im1在左
im3[:,256:,:] = im2.copy() #im2在右
# print(im3.dtype) #查看数组元素类型
im3=np.array(im3,dtype=np.uint8) #将pj1数组元素数据类型的改为"uint8"
# plt.imshow(im3) #查看拼接情况
# plt.show()
io.imsave('C:/Users/86152/OneDrive/桌面/result3/'+file,im3) #保存拼接后的图片