给定4点,如何从火炬/火炬视觉中的图像裁剪四边形?

时间:2018-09-29 07:10:37

标签: python image pytorch torchvision

问题非常简单-

我想从pytorch / torchvision中的图像裁剪四边形。给出的话,我有四个四边形的角坐标。

请注意,这四个点将四边形限制在其内部,不一定是矩形。因此,请不要提出涉及图像切片的建议答案。

如果我错过任何相关细节,请发表评论。

1 个答案:

答案 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]

enter image description here

,然后我可以手动将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)