如何在opencv中使用大津阈值?
我使用了一个固定的阈值,但结果证明它对我不太好。然后,有人告诉我大津的门槛。如何在代码中使用它? 我读过,但我不太明白。有人能给我解释一下如何在OpenCV中使用大津阈值吗 这是我现在的代码:如何在opencv中使用大津阈值?,opencv,threshold,Opencv,Threshold,我使用了一个固定的阈值,但结果证明它对我不太好。然后,有人告诉我大津的门槛。如何在代码中使用它? 我读过,但我不太明白。有人能给我解释一下如何在OpenCV中使用大津阈值吗 这是我现在的代码: #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main ( int argc, char **argv ) { M
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main ( int argc, char **argv )
{
Mat im_gray = imread("img3.jpg",CV_LOAD_IMAGE_GRAYSCALE);
Mat im_rgb = imread("img3.jpg");
cvtColor(im_rgb,im_gray,CV_RGB2GRAY);
Mat img_bw = im_gray > 115;
imwrite("img_bw3.jpg", img_bw);
return 0;
}
是这样吗?
我不太明白,因此,我不知道如何适应我的代码。下面的行使大津阈值运算:
cv::threshold(im_gray, img_bw, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
是源8位图像im_gray
是一个结果img_bw
- 0表示实际忽略的阈值水平,因为我们使用了CV_THRESH_OTSU标志
- 255是将分配给结果中各个像素的值(即,分配给源中的值大于计算阈值的所有像素)
是执行OTSU阈值化所需的标志。因为实际上我们想要执行二进制阈值,所以我们使用CV_THRESH_BINARY|CV_THRESH_OTSU
(您可以使用opencv提供的5个标志中的任何一个)与CV\u THRESH\u binary
CV\u THRESH\u OTSU
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()
在Android中只有一行
Imgproc.threshold(matGrayIn, matOtsuOut, 0, 255, Imgproc.THRESH_OTSU | Imgproc.THRESH_BINARY);
Imgproc.threshold(matGrayIn, matOtsuOut, 0, 255, Imgproc.THRESH_OTSU | Imgproc.THRESH_BINARY);