c++ - OpenCV 相当于 MATLAB 中的阈值

标签 c++ image matlab opencv image-processing

我想在 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);

我在这里是正确的吗?

最佳答案

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

记忆 cv::threshold 的定义:

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

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


(来源:opencv.org)

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

关于c++ - OpenCV 相当于 MATLAB 中的阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29185819/

相关文章:

c++ - 使用 Qt、MFC 和 CMake 尝试/捕捉

c++ - 使用 C++ Win32 API 在 Messagebox 中禁用右上角的 X 按钮图标?

javascript - 如何使用 HTML5 水平翻转图像

过滤脑电图信号中的噪声

c++ - 从卡在循环中而不是读取的文件输出?

c++ - 禁用 STL 内存优化

java - 为什么我的图像没有添加到我的 JButton 中?

html - 我的代码有什么问题? (试图创建一个 slider )

matlab - ODE45 和 Runge-Kutta 方法的绝对误差与解析解的比较

matlab - 绘制没有显式变量名的匿名函数