c++ - 最小值的 OpenCV 中的阈值图像

标签 c++ opencv threshold

我想使用 cv::threshold 函数,因为它经过了很好的优化,而不是自己循环遍历整个图像。但是它没有最小值的阈值。可用的选项:

enter image description here

我想要的是将小于某个值的像素设置为那个值,例如:

image.at<float>(j,i) > 0.1f ? image.at<float>(j,i): 0.1f;

我可以在不使用循环的情况下做到这一点吗?

我试过了:

image.setTo(0.1, image < 0.1);

但它是说:

 error: no match for ‘operator<’ (operand types are ‘const cv::UMat’ and ‘double’)

PS:我的图片是cv::UMat类型

最佳答案

我找到了这个函数:

void cv::max(
const Mat& src1, // Input array
double value, // Scalar input
Mat& dst // Result array
); 

它将 src1 的每个元素与 value 进行比较,并取最大值,这是一种阈值,但具有 cv::max 功能。

关于c++ - 最小值的 OpenCV 中的阈值图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49032386/

相关文章:

c++ - 为 UWP 构建 OpenCV

c++ - 使用 invert() 或 inv() 在 opencv 中反转矩阵时出现运行时错误

python - 如何对二维 numpy 数组中的向量 [u,v] 进行阈值处理?

c++ - 使用函数调用退出 While 循环

c++ - 如何正确判断文本文件的字符编码?

c++ - 在 Win32 上 Hook 虚拟方法(返回大于 ptr 的对象崩溃)?

c++ - 基准代码——是否除以迭代次数?

python - 如何将一系列颜色转换为透明?

matlab - 如何计算roc曲线?

python - 按条件 pandas 删除 90% 的随机行