Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import numpy as np
  3. import cv2
  4. import argparse
  5.  
  6. parser = argparse.ArgumentParser()
  7. parser.add_argument("-tl")
  8. parser.add_argument("-tr")
  9. parser.add_argument("-bl")
  10. parser.add_argument("-br")
  11. parser.add_argument("-out")
  12. args = parser.parse_args()
  13.  
  14. if(args.tl is None or args.tr is None or args.bl is None or args.br is None or args.out is None):
  15. print("Usage: quad -tl <top-left-clip> -tr <top-right-clip> -bl <bottom-left-clip> -br <bottom-right-clip> -out <out>")
  16. exit()
  17.  
  18. # currently uses MP4V codec
  19. outcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
  20.  
  21. print("Layout:")
  22. print("{}\t\t{}".format(args.tl, args.tr))
  23. print("{}\t\t{}".format(args.bl, args.br))
  24. print("Out: {}".format(args.out))
  25.  
  26. ctl = cv2.VideoCapture(args.tl)
  27. ctr = cv2.VideoCapture(args.tr)
  28. cbl = cv2.VideoCapture(args.bl)
  29. cbr = cv2.VideoCapture(args.br)
  30.  
  31. if(ctl is None or ctr is None or cbl is None or cbr is None):
  32. exit()
  33.  
  34. fpstl = int(ctl.get(cv2.CAP_PROP_FPS))
  35. fpstr = int(ctr.get(cv2.CAP_PROP_FPS))
  36. fpsbl = int(cbl.get(cv2.CAP_PROP_FPS))
  37. fpsbr = int(cbr.get(cv2.CAP_PROP_FPS))
  38. ntl = ctl.get(cv2.CAP_PROP_FRAME_COUNT)
  39. ntr = ctr.get(cv2.CAP_PROP_FRAME_COUNT)
  40. nbl = cbl.get(cv2.CAP_PROP_FRAME_COUNT)
  41. nbr = cbr.get(cv2.CAP_PROP_FRAME_COUNT)
  42. n = max(ntl, ntr, nbl, nbr)
  43. fw = int(ctl.get(cv2.CAP_PROP_FRAME_WIDTH))
  44. fh = int(ctl.get(cv2.CAP_PROP_FRAME_HEIGHT))
  45. fw2 = int(fw*2)
  46. fh2 = int(fh*2)
  47.  
  48. if(fpstl != fpstr or fpstr != fpsbl or fpsbl != fpsbr):
  49. print("All frame rates must match! found {}, {}, {}, {}".format(fpstl, fpstr, fpsbl, fpsbr))
  50. exit()
  51.  
  52. if(fw is 0 or fh is 0):
  53. print("Invalid frame size: {} x {}".format(fw, fh))
  54. exit()
  55.  
  56. print("Frame size: {} x {}".format(fw, fh))
  57. out = cv2.VideoWriter(args.out, outcc, fpstl, (fw, fh), True)
  58.  
  59. k = 0
  60. while(True):
  61. if(k > n):
  62. break
  63. print("Frame {} of {}\r".format(k, n), end='')
  64. k += 1
  65. # read a frame from each clip
  66. ret, ftl = ctl.read()
  67. ret, ftr = ctr.read()
  68. ret, fbl = cbl.read()
  69. ret, fbr = cbr.read()
  70.  
  71. # write each frame into a double size buffer
  72. frame = np.zeros((fh2, fw2, 3), dtype="uint8")
  73.  
  74. if ftl is not None:
  75. for i in range(0, fh):
  76. frame[i][0:fw] = ftl[i]
  77. if ftr is not None:
  78. for i in range(0, fh):
  79. frame[i+fh][0:fw] = ftr[i]
  80.  
  81. if fbl is not None:
  82. for i in range(0, fh):
  83. frame[i][fw:fw2] = fbl[i]
  84.  
  85. if fbr is not None:
  86. for i in range(0, fh):
  87. frame[i+fh][fw:fw2] = fbr[i]
  88.  
  89. pframe = cv2.resize(frame, (fw, fh))
  90. out.write(pframe)
  91.  
  92. out.release()
  93. print("\nDone")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement