我想使用 cv::threshold
函数,因为它经过了很好的优化,而不是自己循环遍历整个图像。但是它没有最小值的阈值。可用的选项:
我想要的是将小于某个值的像素设置为那个值,例如:
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/