我的应用程序需要将一个四边形映射到另一个四边形。这些都不是矩形。
但是,我从 warpPerspective() 得到的结果始终是一个矩形。我尝试将“异常值”标志设置为不同的值,以防止扭曲四边形之外的像素出现在目标图像中,但似乎没有任何效果。我想要的是一个扭曲的四边形,扭曲的四边形之外的像素设置为透明度。
我如何实现这一目标?
或者,是否有一种直接的方法来掩盖 OpenCV 中四边形之外的区域,以便我可以将四边形复制到另一个图像?
如果它是相关的,我正在使用 Python 绑定到 OpenCV。
这是我当前的代码:
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
角和目标都是非矩形四边形。然而,输出是一个全宽x高的矩形。没有一个像素是黑色或透明的。相反,它们是角四边形内部和外部图像的像素。我只想要里面的那些。