Guest User

vote.py

a guest
Dec 30th, 2022
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. import os
  2. import sys
  3. import matplotlib.pyplot as plt
  4.  
  5. def create_folder(folder_name):
  6. if not os.path.exists(folder_name):
  7. os.makedirs(folder_name)
  8.  
  9. def move_to_folder(photos, folder_name):
  10. create_folder(folder_name)
  11. for photo in photos:
  12. src = os.path.join(os.getcwd(), photo)
  13. dest = os.path.join(os.getcwd(), folder_name, photo)
  14. if os.path.exists(src):
  15. os.rename(src, dest)
  16.  
  17. def run_match(photos):
  18. pairs = create_pairs(photos)
  19. better = []
  20. worse = []
  21. for pair in pairs:
  22. b, w = compare_photos(pair)
  23. better.append(b)
  24. worse.append(w)
  25. return better, worse
  26.  
  27. def run_tournament(folder_name):
  28. os.chdir(folder_name)
  29. photos = collect_photos()
  30.  
  31. best, good, worst = [], [], photos
  32.  
  33. print('All')
  34. better, worse = run_match(worst)
  35. good.extend(better)
  36. worst = worse
  37. print('Worst')
  38. better, worse = run_match(worst)
  39. good.extend(better)
  40. worst = worse
  41. print('Good')
  42. better, worse = run_match(good)
  43. best.extend(better)
  44. good = worse
  45.  
  46. move_to_folder(best, "best")
  47. move_to_folder(good, "good")
  48. move_to_folder(worst, "worst")
  49.  
  50. def compare_photos(pair):
  51. better = select_better(pair)
  52. return (pair[better-1], pair[2-better])
  53.  
  54. def collect_photos():
  55. return [f for f in os.listdir(os.getcwd()) if f.endswith((".jpg", ".png"))]
  56.  
  57. def create_pairs(photos):
  58. pairs = [photos[i:i+2] for i in range(0, len(photos), 2)]
  59. if len(photos) % 2 != 0:
  60. pairs[-1].append(photos[-1])
  61. return pairs
  62.  
  63.  
  64. def select_better(pair):
  65. selected_image = 0
  66. fig, axs = plt.subplots(1, 2)
  67. axs[0].imshow(plt.imread(pair[0]))
  68. axs[1].imshow(plt.imread(pair[1]))
  69.  
  70. def on_key_press(event):
  71. nonlocal selected_image
  72. if event.key == 'left':
  73. selected_image = 1
  74. plt.close()
  75. elif event.key == 'right':
  76. selected_image = 2
  77. plt.close()
  78. return selected_image
  79.  
  80. fig.subplots_adjust(left=0.1, right=.75, bottom=0.25, top=.95)
  81. fig.canvas.mpl_connect('key_press_event', on_key_press)
  82. try:
  83. fig.canvas.manager.window.state('zoomed')
  84. except:
  85. plt.get_current_fig_manager().window.showMaximized()
  86. plt.show()
  87. return selected_image
  88.  
  89.  
  90.  
  91. folder_name = '.'
  92. if len(sys.argv) > 1:
  93. if os.path.isdir(folder_name):
  94. folder_name = sys.argv[1]
  95. else:
  96. print(f"{folder_name} is not a valid folder")
  97. else:
  98. folder_name = input("Enter the name of the folder containing the photos: ")
  99.  
  100. run_tournament(folder_name)
  101.  
Add Comment
Please, Sign In to add comment