I have some problem with preprocessing of an image. I have this picture of a book on my desk:

I'm trying to get the shape of the book (a filled rectangle) in black&white using cv2 adaptive threshold
ts_img = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,11,2)
but what I get is just the edges of figure with a lot of noise, for example the edges of the title. Is there a way to get just the black filled rectangle that represents the book on white background? Thanks!
Since the book is blue, just search for the pixels where the blue channel is higher than r, you can make this also more robust by specifying factors and so on.
Here is my approach:
And the results:
As fmw42 mentioned, the best answers are the simplest.
cv2.adaptiveThresholdis not an easy function to use and in this case, the obvious approach should be to go with colour channels instead of dynamic thresholds