Создание бесшовного соединения при повернутой рентабельности инвестиций

#python #opencv

#python #opencv

Вопрос:

 import cv2
import numpy as np

lena = cv2.imread('lena.jpg')
height, width = lena.shape[:2]

a = 250  # equilateral triangle side
h = a * (3 ** .5) / 2  # equilateral triangle height

# triangle points to be used for masking the image
tri = np.array([[0, h], [a / 2, 0], [a, h]], np.float32)

mask = np.zeros((height, width), dtype=np.uint8)
cv2.fillConvexPoly(mask, tri.astype(np.int32), (255, 255, 255))
tri_crop = cv2.bitwise_and(lena, lena, mask=mask)

# new triangle points
tri_trans = np.array([[3 * a / 2, 0], [a / 2, 0], [a, h]], np.float32)

# transform inital triangle to new triangle points
aff_trans = cv2.getAffineTransform(tri, tri_trans)
tri_warp = cv2.warpAffine(tri_crop, aff_trans, (width, height))

# join triangles together
new_canvas = cv2.bitwise_or(tri_crop, tri_warp)

cv2.imwrite('lena.png', new_canvas)
 

вывод:

Итак, вы можете видеть линию, разделяющую два треугольника — соединение не бесшовное.
Любой совет, как сделать соединение бесшовным?

Ответ №1:

Теперь посмотрите на это волшебство:

 tri_crop[tri_crop == 0] = tri_warp[tri_crop == 0]