Учитывая 4 балла, как обрезать четырехугольник из изображения в pytorch/torchvision?
Проблема довольно проста -
Я хочу обрезать четырехугольник из изображения в pytorch/torchvision. Учитывая, у меня есть четыре координаты углов этого четырехугольника.
Обратите внимание, что эти четыре точки ограничивают четырехугольник внутри себя, который может быть или не быть прямоугольником. Поэтому, пожалуйста, воздержитесь от предложения ответов, связанных с нарезкой изображения.
Пожалуйста, прокомментируйте, если я пропустил любую соответствующую деталь.
1 ответ
Цитируя /questions/37141248/izvlechenie-zadannyih-koordinat-mnogougolnika-iz-izobrazheniya-s-ispolzovaniem-opencv/37141249#37141249 Я мог бы извлечь патч, используя opencv как -
import numpy as np
import cv2
pts = np.array([[542, 107], [562, 102], [582, 110], [598, 142], [600, 192], [601, 225], [592, 261], [572, 263], [551, 245], [526, 220], [520, 188], [518, 152], [525, 127], [524, 107]], dtype=np.int32)
mask = np.zeros((img.shape[0], img.shape[1]))
cv2.fillConvexPoly(mask, pts, 1)
mask = mask.astype(np.bool)
out = np.zeros_like(img)
out[mask] = img[mask]
и тогда я мог бы вручную преобразовать массив numpy в переменную torch. Это, кажется, не вызывает ошибок, даже когда я формирую график факела для нейронных сетей.
outputs = model(images)
o = outputs.data.cpu().numpy()
#
# do your opencv stuff here to o
#
o = torch.Tensor(o).to(device)
outputs = Variable(o, requires_grad=True)