I hope what you asking is "Crop out the white spaces of image automatically".
Here we assume a binary image : pixels have high and low values.
def focusToContent(img):
img_ = 255*(img < 128).astype(np.uint8)
coords = cv.findNonZero(img_) # Find all non-zero points (text)
x, y, w, h = cv.boundingRect(coords) # Find minimum spanning bounding box
rect = img[y:y+h, x:x+w] # Crop the image - note we do this on the original image
rect_originalSized = cv.resize(rect,(img.shape))
return rect_originalSized
img should be a opencv image (numpy array with proper data type)
Test the code
#testing
img = cv.imread(r"D:/ENTC/SEM_4/EN2550 - Fundamentals of Image Processing and Machine Vision/~images/int-rec/test/1650009171.5083215.png",0)
assert img is not None
focused = focusToContent(img)
fig,ax = plt.subplots(1,2)
ax[0].imshow(img,cmap="gray")
ax[1].imshow(focused,cmap="gray")
plt.show()
