image_add.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import numpy as np
  2. import cv2
  3. import random
  4. import copy
  5. # 噪点增加
  6. def add_noise(cls,img):
  7. for i in range(20): #添加点噪声
  8. temp_x = np.random.randint(0,img.shape[0])
  9. temp_y = np.random.randint(0,img.shape[1])
  10. img[temp_x][temp_y] = 255
  11. return img
  12. # 适当腐蚀
  13. def add_erode(cls,img):
  14. kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3))
  15. img = cv2.erode(img,kernel)
  16. return img
  17. # 适当膨胀
  18. def add_dilate(cls,img):
  19. kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3))
  20. img = cv2.dilate(img,kernel)
  21. return img
  22. # 随机扰动
  23. def do(self,img_list=[]):
  24. aug_list= copy.deepcopy(img_list)
  25. for i in range(len(img_list)):
  26. im = img_list[i]
  27. if self.noise and random.random()<0.5:
  28. im = self.add_noise(im)
  29. if self.dilate and random.random()<0.25:
  30. im = self.add_dilate(im)
  31. if self.erode and random.random()<0.25:
  32. im = self.add_erode(im)
  33. aug_list.append(im)
  34. return aug_list