私のアプリケーションでは、ある四辺形を別の四辺形にマッピングする必要があります。これらはどちらも長方形ではありません。
ただし、warpPerspective()から得られる結果は、常に長方形です。「外れ値」フラグを別の値に設定して、ワープしたクワッドの外側のピクセルが宛先画像に表示されないようにしましたが、何も機能しないようです。私が欲しいのは、ワープされたクワッドの外側のピクセルが透明に設定されたワープされたクワッドです。
どうすればこれを達成できますか?
または、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
コーナーとターゲットは両方とも非長方形の四角形です。ただし、出力は全幅x高さの長方形です。どのピクセルも黒または透明ではありません。代わりに、それらはコーナークワッドの内側と外側の両方の画像からのピクセルです。中にあるものだけが欲しいです。