def example_04_find_homography_blend_multi_band(detector='SIFT', matchtype='knn'): folder_input = 'images/ex_keypoints/' img_left = cv2.imread(folder_input + 'left.jpg') img_right = cv2.imread(folder_input + 'rght.jpg') folder_output = 'images/output/' output_left = folder_output + 'left_out.jpg' output_rght = folder_output + 'rght_out.jpg' if not os.path.exists(folder_output): os.makedirs(folder_output) else: tools_IO.remove_files(folder_output) points_left, des_left = tools_alg_match.get_keypoints_desc(img_left,detector) points_rght, des_rght = tools_alg_match.get_keypoints_desc(img_right,detector) homography = tools_calibrate.get_homography_by_keypoints_desc(points_left, des_left, points_rght, des_rght) result_left, result_right= tools_calibrate.get_stitched_images_using_homography(img_left, img_right, homography) result_image = tools_image.blend_multi_band(result_left,result_right) cv2.imwrite(output_left, result_image) homography = tools_calibrate.get_homography_by_keypoints_desc(points_rght, des_rght, points_left, des_left) result_right, result_left= tools_calibrate.get_stitched_images_using_homography(img_right, img_left, homography) result_image = tools_image.blend_multi_band(result_left,result_right) cv2.imwrite(output_rght, result_image) return
def do_faceswap_cpu(self, folder_out='./images/output/', do_debug=False): if do_debug and folder_out is not None: tools_IO.remove_files(folder_out, create=True) if self.L_actor.min() == self.L_actor.max() == 0 or self.L_clbrt.min( ) == self.L_clbrt.max() == 0: return self.image_actor H = tools_calibrate.get_transform_by_keypoints(self.L_clbrt, self.L_actor) LC_aligned, LA_aligned = tools_calibrate.translate_coordinates( self.image_clbrt, self.image_actor, H, self.L_clbrt, self.L_actor) # face face = self.R_c.morph_2D_mesh(self.image_actor.shape[0], self.image_actor.shape[1], LA_aligned[self.D.idx_removed_eyes], self.L_clbrt[self.D.idx_removed_eyes], self.del_triangles_C) if self.do_narrow_face: face = self.narrow_face(face, LA_aligned) if do_debug: cv2.imwrite(folder_out + 's03-face.jpg', face) if do_debug: cv2.imwrite(folder_out + 's03-face_masked.jpg', face) filter_face_size = int( 0.2 * (LA_aligned[:, 0].max() - LA_aligned[:, 0].min())) result = tools_image.blend_multi_band_large_small( self.image_actor, face, (0, 0, 0), adjust_colors=self.adjust_every_frame, filter_size=filter_face_size, do_debug=do_debug) if do_debug: cv2.imwrite(folder_out + 's03-result.jpg', result) # mouth LA_aligned_mouth = LA_aligned[numpy.arange(48, 61, 1).tolist()] del_mouth = Delaunay(LA_aligned_mouth).vertices temp_mouth = self.R_a.morph_2D_mesh(self.image_actor.shape[0], self.image_actor.shape[1], LA_aligned_mouth, LA_aligned_mouth, del_mouth) if do_debug: cv2.imwrite(folder_out + 's03-temp_mouth.jpg', temp_mouth) filter_mouth_size = filter_face_size // 2 result = tools_image.blend_multi_band_large_small( result, temp_mouth, (0, 0, 0), adjust_colors=False, filter_size=filter_mouth_size) if do_debug: cv2.imwrite(folder_out + 's03-result-mouth.jpg', result) if do_debug: cv2.imwrite(folder_out + 's06-result2.jpg', result) cv2.imwrite(folder_out + 's06-original.jpg', self.image_actor) return result
def example_04_blend_multi_band_mask(): folder_input = 'images/ex_blend/' img1 = cv2.imread(folder_input + 'black_R.png') img2 = cv2.imread(folder_input + 'black_L.png') folder_output = 'images/output/' if not os.path.exists(folder_output): os.makedirs(folder_output) else: tools_IO.remove_files(folder_output) cv2.imwrite(folder_output + 'res.png', tools_image.blend_multi_band_large_small(img1, img2,(0, 0, 0),filter_size=10,adjust_colors=True,do_debug=True)) return
def example_04_blend_multi_band_white(): folder_input = 'images/ex_blend/' img1 = cv2.imread(folder_input + 'white_L.png') img2 = cv2.imread(folder_input + 'white_R.png') folder_output = 'images/output/' if not os.path.exists(folder_output): os.makedirs(folder_output) else: tools_IO.remove_files(folder_output) cv2.imwrite(folder_output + 'blend_multi_band.png', tools_image.blend_multi_band(img1, img2,(255, 255, 255))) return
def example_04_blend_black_avg(): folder_input = 'images/ex_blend/' img1 = cv2.imread(folder_input + 'black_L.png') img2 = cv2.imread(folder_input + 'black_R.png') folder_output = 'images/output/' if not os.path.exists(folder_output): os.makedirs(folder_output) else: tools_IO.remove_files(folder_output) cv2.imwrite(folder_output + 'avg.png', tools_image.blend_avg(img1, img2, (0, 0, 0))) return