问题非常简单-
我想从pytorch / torchvision中的图像裁剪四边形。给出的话,我有四个四边形的角坐标。
请注意,这四个点将四边形限制在其内部,不一定是矩形。因此,请不要提出涉及图像切片的建议答案。
如果我错过任何相关细节,请发表评论。
答案 0 :(得分:0)
引用https://stackoverflow.com/a/30902423/4982729,我可以将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数组转换为手电筒的Variable。即使在为神经网络形成火炬图时,这似乎也不会引起任何错误。
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)