I have an image that when I apply a binary threshold on it, it gives a different result compared to when it is in an image with other things. I'm not sure if I'm setting the parameters for the thresholding function incorrectly as I took the example from the OpenCV documentation. Link to documentation:
#Reading in image1
img1 = cv2.imread("Templates/YellowBlocks/SS.png", cv2.IMREAD_COLOR)
#Reading in image2
img2 = cv2.imread("Test Program 1.png", cv2.IMREAD_COLOR)
#Converting image1 to grayscale
grayImg1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
#Converting image2 to grayscale
grayImg2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
#Applying a binary threshold on image1 to show text in black and white
ret1,thresh1 = cv2.threshold(grayImg1, 0, 255,cv2.THRESH_OTSU cv2.THRESH_BINARY)
#Applying a binary threshold on image2 to show text in black and white
ret2,thresh2 = cv2.threshold(grayImg2, 0, 255,cv2.THRESH_OTSU cv2.THRESH_BINARY)
#Displaying image1
cv2.imshow('img1', img1)
#Displaying thresholded image1
cv2.imshow('thresh1', thresh1)
#Displaying image2
cv2.imshow('img2', img2)
#Displaying thresholded image2
cv2.imshow('thresh2', thresh2)
cv2.waitKey(0)
CodePudding user response:
This is because of your usage of OTSU. It sets some sort of automatic threshold. Please refer to the following link