Failure to use adaptiveThreshold: CV_8UC1 in function adaptiveThreshold

you should load your file like this

src.create(rows, cols, CV_8UC1);
src = imread(your-file, CV_8UC1);

and after that

adaptiveThreshold(src, dst, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 75, 10);

you can change the code to slightly like this :

img_blur = cv2.medianBlur(self.cropped_img,5).astype('uint8')
img_thresh_Gaussian = cv2.adaptiveThreshold(img_blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)

just by adding ('uint8') while blurring has resolved my issue.


you have to imread your image in grayscale, so use the code below:

image = imread('address', 0)

0 exchange the channel of image to grayscale


The problem is that you are trying to use adaptive thresholding to an image that is not in greyscale. And the function only works with a greyscale images.

So you have to convert your image to a greyscale format as it is described in documentation.

They read the image in a greyscale format with: img = cv2.imread('dave.jpg',0). You can also convert it to greyscale with: img_grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Tags:

Python

Opencv