-
-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathstitching.py
57 lines (40 loc) · 1.75 KB
/
stitching.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import argparse
import logging
import cv2
from image_stitching import ImageStitcher
from image_stitching import load_frames
from image_stitching import display
__doc__ = '''This script lets us stich images together and display or save the results'''
def parse_args():
'''parses the command line arguments'''
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('paths',
type=str,
nargs='+',
help="paths to images, directories, or videos")
parser.add_argument('--debug', action='store_true', help='enable debug logging')
parser.add_argument('--display', action='store_true', help="display result")
parser.add_argument('--save', action='store_true', help="save result to file")
parser.add_argument("--save-path", default="stitched.png", type=str, help="path to save result")
return parser.parse_args()
if __name__ == '__main__':
args = parse_args()
level = logging.DEBUG if args.debug else logging.INFO
logging.basicConfig(level=level)
stitcher = ImageStitcher()
for idx, frame in enumerate(load_frames(args.paths)):
stitcher.add_image(frame)
result = stitcher.image()
if args.display:
logging.info(f'displaying image {idx}')
display('result', result)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
if args.save:
image_name = f'result_{idx}.jpg'
logging.info(f'saving result image on {image_name}')
cv2.imwrite(image_name, result)
logging.info('finished stitching images together')
if args.save:
logging.info(f'saving final image to {args.save_path}')
cv2.imwrite(args.save_path, result)