diff --git a/lab5/main.py b/lab5/main.py index 4594074..a4e3eb7 100644 --- a/lab5/main.py +++ b/lab5/main.py @@ -5,8 +5,8 @@ import numpy as np def click_event(event, x, y, flags, params): if event == cv.EVENT_LBUTTONDOWN: # print(x, ' ', y) - cv.circle(img, (int(x), int(y)), 10, [0, 255, 255], -1) - cv.imshow('image', img) + cv.circle(img_copy, (int(x), int(y)), 10, [0, 255, 255], -1) + cv.imshow('image', img_copy) vertexes.append([x, y]) if len(vertexes) == 4: add_img_in_area() @@ -15,15 +15,25 @@ def click_event(event, x, y, flags, params): def add_img_in_area(): dst_points = np.array(vertexes, dtype=float) src_points = np.array([[0, 0], [bakery_w, 0], [bakery_w, bakery_h], [0, bakery_h]], dtype=float) + mat_h = cv.findHomography(src_points, dst_points)[0] image_transformed_h = cv.warpPerspective(bakery, mat_h, (img_w, img_h)) - cv.imshow('image', image_transformed_h) + + mask = np.zeros(img.shape[:2], dtype="uint8") + cv.fillPoly(mask, np.int32([dst_points]), (255, 255, 255)) + + bg_with_black_space = cv.bitwise_and(img, img, mask=cv.bitwise_not(mask)) + + result = bg_with_black_space + image_transformed_h + + cv.imshow('image', result) vertexes.clear() if __name__ == '__main__': vertexes = [] img = cv.imread('../img/billboards.jpg') + img_copy = img.copy() bakery = cv.imread('../img/bakery.jpg') bakery_h, bakery_w = bakery.shape[0:2] img_h, img_w = img.shape[0:2]