exposureFusion.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import cv2
  2. import numpy as np
  3. import sys
  4. def readImagesAndTimes():
  5. filenames = [
  6. "images/memorial0061.jpg",
  7. "images/memorial0062.jpg",
  8. "images/memorial0063.jpg",
  9. "images/memorial0064.jpg",
  10. "images/memorial0065.jpg",
  11. "images/memorial0066.jpg",
  12. "images/memorial0067.jpg",
  13. "images/memorial0068.jpg",
  14. "images/memorial0069.jpg",
  15. "images/memorial0070.jpg",
  16. "images/memorial0071.jpg",
  17. "images/memorial0072.jpg",
  18. "images/memorial0073.jpg",
  19. "images/memorial0074.jpg",
  20. "images/memorial0075.jpg",
  21. "images/memorial0076.jpg"
  22. ]
  23. images = []
  24. for filename in filenames:
  25. im = cv2.imread(filename)
  26. images.append(im)
  27. return images
  28. if __name__ == '__main__':
  29. # Read images
  30. print("Reading images ... ")
  31. if len(sys.argv) > 1:
  32. # Read images from the command line
  33. images = []
  34. for filename in sys.argv[1:]:
  35. im = cv2.imread(filename)
  36. images.append(im)
  37. needsAlignment = False
  38. else :
  39. # Read example images
  40. images = readImagesAndTimes()
  41. needsAlignment = False
  42. # Align input images
  43. if needsAlignment:
  44. print("Aligning images ... ")
  45. alignMTB = cv2.createAlignMTB()
  46. alignMTB.process(images, images)
  47. else :
  48. print("Skipping alignment ... ")
  49. # Merge using Exposure Fusion
  50. print("Merging using Exposure Fusion ... ");
  51. mergeMertens = cv2.createMergeMertens()
  52. exposureFusion = mergeMertens.process(images)
  53. # Save output image
  54. print("Saving output ... exposure-fusion.jpg")
  55. cv2.imwrite("exposure-fusion.jpg", exposureFusion * 255)