在将图片输入到模型中进行训练之前,往往需要对图片数据集进行增强处理等一系列操作。本文对这些预处理操作进行一些总结。
PIL和opencv格式的转换
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 
 | import cv2
 from PIL import Image
 import numpy
 
 img = cv2.imread("plane.jpg")
 cv2.imshow("OpenCV",img)
 image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
 image.show()
 cv2.waitKey()
 
 
 import cv2
 from PIL import Image
 import numpy
 
 image = Image.open("plane.jpg")
 image.show()
 img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)
 cv2.imshow("OpenCV",img)
 cv2.waitKey()
 
 | 
letter_box的添加
为了防止将图片resize到固定大小的时候的失真,往往需要在对图片进行缩放后添加白边。如下图所示。

图像添加letter box的代码如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 
 | from PIL import Imagedef letterbox_image(image, size):
 
 
 iw, ih = image.size
 w, h = size
 scale = min(w/iw, h/ih)
 nw = int(iw*scale)
 nh = int(ih*scale)
 
 image = image.resize((nw,nh), Image.BICUBIC)
 new_image = Image.new('RGB', size, (128,128,128))
 new_image.paste(image, ((w-nw)//2, (h-nh)//2))
 return new_image
 
 if __name__ == "__main__":
 import cv2
 import numpy as np
 pil_img = letterbox_image(Image.open("1.png"),(100,200))
 cv2_img = cv2.cvtColor(np.array(pil_img),cv2.COLOR_RGB2BGR)
 cv2.imshow("xx",cv2_img)
 cv2.waitKey()
 
 
 
 
 
 |