Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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