我的应用程序需要将一个四边形映射到另一个四边形,但这两个四边形都不是矩形。
然而,我从warpPerspective()得到的结果总是一个矩形。我已经尝试将“outlier”标志设置为不同的值,以防止来自变形四边形外部的像素出现在目标图像中,但似乎没有任何作用。我想要的是一个变形后的四边形,其外部像素设置为透明。
我该怎么做才能实现这一点?
或者,是否有一种直接的方法在OpenCV中屏蔽四边形外部区域,以便我可以只复制四边形到另一张图片中?
如果相关的话,我正在使用OpenCV的Python绑定。
这是我的当前代码:
def warpImage(image, corners, target, width, height):
mat = cv2.getPerspectiveTransform(corners, target)
out = numpy.zeros(shape=(width, height), dtype="uint8")
out = cv2.warpPerspective(image, mat, (width,height), out, cv2.INTER_CUBIC)
return out
corners和target都是非矩形四边形。输出是一个完整的宽度x高度矩形。没有任何黑色或透明的像素,而是来自四边形内外图像的像素。我只需要里面的像素。