I was making the whole process complex. There is a very straight forward and simple answer. https://stackoverflow.com/questions/56813343/masking-out-a-specific-region-in-opencv-python
import numpy as np
import cv2
import matplotlib.pyplot as plt
# create a polygons using all outer corners of the ROI
external_poly = np.array( [[[1458,1440],[0,1440],[0,0],[2560,0],[2560,740], [1940,60], [1453,60]]], dtype=np.int32 )
im = cv2.imread("original.png", 1)
cv2.fillPoly( im , external_poly, (0,0,0) )
cv2.imwrite("output.jpg", im)
This method creates a polygon that takes everything outside ROI and fills the polygon with black color.

