Spaces:
Paused
Paused
| from os.path import join as pjoin | |
| import cv2 | |
| import os | |
| import multiprocessing | |
| def resize_height_by_longest_edge(img_path, resize_length=800): | |
| org = cv2.imread(img_path) | |
| height, width = org.shape[:2] | |
| if height > width: | |
| return resize_length | |
| else: | |
| return int(resize_length * (height / width)) | |
| def nothing(x): | |
| pass | |
| if __name__ == '__main__': | |
| # Set multiprocessing start method for macOS compatibility | |
| try: | |
| multiprocessing.set_start_method('spawn', force=True) | |
| except RuntimeError: | |
| pass # It's OK if it's already set | |
| ''' | |
| This script is for testing component detection (ip) with adjustable parameters. | |
| Press 'q' in an image window to quit. | |
| - min-grad: gradient threshold to produce binary map | |
| - min-ele-area: minimum area for selected elements | |
| ''' | |
| key_params = {'min-grad': 4, 'ffl-block': 5, 'min-ele-area': 25, | |
| 'merge-contained-ele': True, 'remove-bar': True} | |
| # set input image path | |
| input_path_img = 'data/test1.png' | |
| output_root = 'data' | |
| resized_height = resize_height_by_longest_edge(input_path_img) | |
| # Classification is disabled by default in this testing script. | |
| # Set to True if you have a trained model and want to test classification. | |
| is_clf = False | |
| # Create window and trackbars for real-time parameter adjustment | |
| cv2.namedWindow('parameters') | |
| cv2.createTrackbar('min-grad', 'parameters', key_params['min-grad'], 20, nothing) | |
| cv2.createTrackbar('min-ele-area', 'parameters', key_params['min-ele-area'], 200, nothing) | |
| # Main loop for component detection | |
| while True: | |
| # Read current trackbar positions | |
| key_params['min-grad'] = cv2.getTrackbarPos('min-grad', 'parameters') | |
| key_params['min-ele-area'] = cv2.getTrackbarPos('min-ele-area', 'parameters') | |
| # Import the component detection module | |
| import detect_compo.ip_region_proposal as ip | |
| os.makedirs(pjoin(output_root, 'ip'), exist_ok=True) | |
| # Set up classifier if enabled | |
| classifier = None | |
| if is_clf: | |
| classifier = {'Elements': CNN('Elements')} | |
| from cnn.CNN import CNN | |
| # Run component detection with current parameters | |
| ip.compo_detection(input_path_img, output_root, key_params, | |
| classifier=classifier, resize_by_height=resized_height, show=True, wai_key=10) | |
| # Exit loop if 'q' is pressed | |
| if cv2.waitKey(20) & 0xFF == ord('q'): | |
| break | |
| cv2.destroyAllWindows() | |