最近要做圖片的預處理工作,目的是把原圖像的roi提取出來。這裏使用python做圖像的批量裁剪 ,代碼如下:
# coding: utf-8
from PIL import Image
import os
import os.path
import numpy as np
import cv2
imgs = []
os_getcwd=os.getcwd().replace('\\','/')
dbDir = os_getcwd + "/db-before/"
print(os_getcwd)
people = os.listdir(dbDir)
people.sort()
print(people)
path_after = r'../db-after'
for person in people:
personDir = dbDir + person + "/"
hands = os.listdir(personDir)
#print('personDir:',personDir)
#print('hands:', hands)
for hand in hands:
os.makedirs('crop-image'+'./'+path_after+'./'+person+'./'+hand)
handDir = personDir + hand + "/"
mg = os.listdir(handDir)
mg.sort()
#print("mg:",mg)
imgs = imgs + [handDir + s.split(".")[0] for s in mg if not s.split(".")[0] == "Thumbs"]
#print("imgs:", imgs)
per_img_path = [i.replace('db-before', 'db-after') for i in imgs]
per_img_path=[i.replace('\\', '/') for i in per_img_path]
print("per_img_path:",per_img_path)
for index,imgPath in enumerate(imgs):
print('imgPath:',imgPath)
img = Image.open(imgPath+'.bmp')
print(img.format, img.size, img.mode)
#img.show()
box1 = (60, 90, 270, 170) # 設置左、上、右、下的像素
image1 = img.crop(box1) # 圖像裁剪
print('per_img_path:',per_img_path[index])
image1.save(per_img_path[index]+'.bmp') # 存儲裁剪得到的圖像
原來圖片:
裁剪後: