gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:37:08 24 4
gpt4 key购买 nike

我想在 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/

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