def write_out_missed_codes(self, found_codes, missed_code_filename, out_directory): missing_codes = [] for possibly_missed_code in self.possibly_missed_codes: was_actually_found = False for found_code in found_codes: pos_diff = position_difference(possibly_missed_code.position, found_code.position) if pos_diff < 0.12: was_actually_found = True break if not was_actually_found: missing_codes.append(possibly_missed_code) missed_code_filepath = os.path.join(out_directory, missed_code_filename) missed_code_file = open(missed_code_filepath, 'wb') missed_code_csv_writer = csv.writer(missed_code_file) # Create subdirectory to store extracted images in. extracted_img_out_directory = os.path.join(out_directory, 'extracted_images/') if not os.path.exists(extracted_img_out_directory): os.makedirs(extracted_img_out_directory) for k, missed_code in enumerate(missing_codes): parent_img = cv2.imread(missed_code.parent_filepath, cv2.CV_LOAD_IMAGE_COLOR) if parent_img is None: print 'Cannot open image: {}'.format(missed_code.parent_filepath) continue extracted_img = extract_square_image(parent_img, missed_code.rect, 60, rotated=True) extracted_img_filename = '{}_{}'.format(k, postfix_filename(missed_code.parent_filename, '_missed')) extracted_img_filepath = os.path.join(extracted_img_out_directory, extracted_img_filename) cv2.imwrite(extracted_img_filepath, extracted_img) x, y = rectangle_center(missed_code.rect) missed_code_csv_writer.writerow(['add_imaged_code', k, missed_code.parent_filename, int(x), int(y)])
def add_possibly_missed_code(self, bouding_rect, geo_image): x, y = rectangle_center(bouding_rect) position = calculate_pixel_position(x, y, geo_image) self.possibly_missed_codes.append(self.MissedCode(bouding_rect, position, geo_image.file_name, geo_image.file_path))