Java port of C++ code found in StackOverflow and similarly a Python version found in GitHub No warranty! My best guess at a port but I am not an expert in C++ OpenCV and have no good way to verify it. For experimental, teaching purposes only.
github manisoftwartist/perspectiveproj
Rotate.java incudes the OpenCV trackbar example to change the rotation angles.