gpt4 book ai didi

opencv - 如何在 opencv 中使用 OTSU 阈值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:45 25 4
gpt4 key购买 nike

我使用的是固定阈值,但事实证明它对我来说不太好。然后,有人告诉我大津阈值。我如何在我的代码中使用它?我读过它,但我不太了解。有人可以向我解释如何在 OpenCV 中使用 otsu 阈值吗?

现在这是我的代码:

    #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;
}

有了这个,我必须将阈值更改为我想要转换为二进制的任何图像。我发现了这个:

    cvThreshold(scr, dst, 128, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);

是吗?我不太了解,因此不知道如何适应我的代码。

最佳答案

以下行进行 otsu 阈值操作:

cv::threshold(im_gray, img_bw, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
  • im_gray 是源 8 位图像,
  • img_bw是一个结果,
  • 0 表示阈值级别,实际上被省略了,因为我们使用了 CV_THRESH_OTSU 标志,
  • 255 是将分配给结果中各个像素的值(即,分配给源中的值大于计算阈值水平的所有像素)
  • CV_THRESH_BINARY | CV_THRESH_OTSU 是执行 Otsu 阈值化的必需标志。因为实际上我们想执行二进制阈值处理,所以我们使用 CV_THRESH_BINARY(您可以使用 opencv 提供的 5 个标志中的任何一个)结合 CV_THRESH_OTSU

文档链接:http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#threshold

关于opencv - 如何在 opencv 中使用 OTSU 阈值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17141535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com