修正涂抹框旋转

This commit is contained in:
2024-07-10 10:12:31 +08:00
parent 94e183c661
commit 33db105518

View File

@@ -115,15 +115,19 @@ def rotate_image(img, angle):
def rotate_rectangle(rectangle, center, angle): def rotate_rectangle(rectangle, center, angle):
def rotate_point(pt, angle, center): def rotate_point(pt, angle, center):
matrix = cv2.getRotationMatrix2D(center, angle, 1) matrix = cv2.getRotationMatrix2D(center, angle, 1)
# 旋转后平移 if angle != 180:
matrix[0, 2] += center[1] - center[0] # 旋转后平移
matrix[1, 2] += center[0] - center[1] matrix[0, 2] += center[1] - center[0]
matrix[1, 2] += center[0] - center[1]
reverse_matrix = cv2.invertAffineTransform(matrix) reverse_matrix = cv2.invertAffineTransform(matrix)
pt = np.array([[pt[0]], [pt[1]], [1]]) pt = np.array([[pt[0]], [pt[1]], [1]])
return np.dot(reverse_matrix, pt) return np.dot(reverse_matrix, pt)
if angle == 0:
return list(rectangle)
x1, y1, x2, y2 = rectangle x1, y1, x2, y2 = rectangle
# 计算矩形的四个顶点 # 计算矩形的四个顶点
@@ -193,7 +197,7 @@ def find_box_of_content(content, layout):
) )
def mask_image(image, content): def get_mask_layout(image, content):
with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as temp_file: with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as temp_file:
cv2.imwrite(temp_file.name, image) cv2.imwrite(temp_file.name, image)
@@ -238,7 +242,7 @@ def photo_mask(pk_phhd, content):
for img in split_result: for img in split_result:
angles = get_image_rotation_angles(img["img"]) angles = get_image_rotation_angles(img["img"])
rotated_img = rotate_image(img["img"], int(angles[0])) rotated_img = rotate_image(img["img"], int(angles[0]))
results = mask_image(rotated_img, content) results = get_mask_layout(rotated_img, content)
for result in results: for result in results:
height, width = img["img"].shape[:2] height, width = img["img"].shape[:2]