Guest User

Untitled

a guest
May 25th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. # -*- encoding: utf-8 -*-
  2. import argparse
  3. import fnmatch
  4. import os
  5. import pathlib
  6.  
  7. import cv2
  8.  
  9.  
  10. def files_recursively(dir_path, pattern="*.png"):
  11. for path, dir_name, file_names in os.walk(dir_path):
  12. for file_name in fnmatch.filter(file_names, pattern):
  13. yield os.path.join(path, file_name)
  14.  
  15.  
  16. def generate_thumbnails(dir, out_dir=None):
  17. for file in files_recursively(dir):
  18. #print("File: " + file)
  19. img = cv2.imread(file)
  20.  
  21. if img is None:
  22. continue
  23.  
  24. gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  25. th, threshed = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY_INV)
  26. kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (11, 11))
  27. morphed = cv2.morphologyEx(threshed, cv2.MORPH_CLOSE, kernel)
  28.  
  29. _, cnts, _ = cv2.findContours(morphed, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
  30. cnt = sorted(cnts, key=cv2.contourArea)[-1]
  31.  
  32. x, y, w, h = cv2.boundingRect(cnt)
  33. dst = img[y:y+h, x:x+w]
  34.  
  35. out = "" if out_dir is None else out_dir
  36. out = os.getcwd() + "/" + out + "/" + file
  37. print("Out: " + out)
  38. pathlib.Path(os.path.dirname(out)).mkdir(parents=True, exist_ok=True)
  39. cv2.imwrite(out, dst)
  40.  
  41. #cv2.imshow('image', dst)
  42. #cv2.waitKey(0)
  43. #cv2.destroyAllWindows()
  44.  
  45.  
  46. def main():
  47. parser = argparse.ArgumentParser(description="Generate thumbnails to verify labels")
  48. parser.add_argument("dir", help="Target directory", type=str)
  49. args = parser.parse_args()
  50. generate_thumbnails(args.dir, "out")
  51.  
  52.  
  53. if __name__ == '__main__':
  54. main()
Add Comment
Please, Sign In to add comment