【问题标题】:OpenCV equivalent for thresholding in MATLABOpenCV 等效于 MATLAB 中的阈值处理
【发布时间】:2015-05-25 00:01:25
【问题描述】:

我想在 OpenCV C++ 中实现这个 MATLAB 语句:

 bwImgLabeled(bwImgLabeled > 0) = 1;

据我了解,从那时起 OpenCV 文档,http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#threshold, 我需要做的:

cv::threshold(dst, dst, 0, 1, CV_THRESH_BINARY);

我说的对吗?

【问题讨论】:

    标签: c++ image matlab opencv image-processing


    【解决方案1】:

    是的,你是对的。 MATLAB 代码所做的是它搜索任何非零像素并将它们设置为 1。

    回忆cv::threshold的定义:

    double threshold(InputArray src, OutputArray dst, 
                     double thresh, double maxval, int type)
    

    所以前两个输入是源图像和目标图像,在您的情况下,您希望获取目标图像并对其进行变异以包含最终图像。 thresh = 0 和 maxval = 1,以及 type=CV_THRESH_BINARY。回想一下使用CV_THRESH_BINARY时,会出现如下关系:


    (来源:opencv.org)

    因此,如果您将 thresh 指定为 0,将 maxval 指定为 1,那么您实际上是在执行 MATLAB 代码正在执行的操作。任何大于 thresh=0 的像素(本质上是非零的),您将这些强度设置为 1。我假设您希望输入和输出图像为 floating-point,所以让确保图像是兼容的类型,例如CV_32FC1,或CV_32FC3,等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      相关资源
      最近更新 更多