I was using a fixed threshold but turns out that it\'s not so good for me. Then, someone told me about the otsu threshold. How can I use it in my code? I read about it and I
In python it is simple
import cv2
img = cv2.imread('img.jpg',0) #pass 0 to convert into gray level
ret,thr = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU)
cv2.imshow('win1', thr)
cv2.waitKey(0)
cv2.destroyAllWindows()
In Android is one line.
Imgproc.threshold(matGrayIn, matOtsuOut, 0, 255, Imgproc.THRESH_OTSU | Imgproc.THRESH_BINARY);
Following line makes otsu thresholding operation:
cv::threshold(im_gray, img_bw, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
im_gray
is a source 8-bit image,img_bw
is a result,CV_THRESH_BINARY | CV_THRESH_OTSU
is a required flag to perform Otsu thresholding. Because in fact we would like to perform binary thresholding, so we use CV_THRESH_BINARY
(you can use any of 5 flags opencv provides) combined with CV_THRESH_OTSU
Link to documentation: http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#threshold