threshold函数是用于图像二值化的函数。它将图像中的像素值与指定的阈值进行比较,根据比较结果将像素值转换为二值图像(仅包含两个值)。
1 | double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type); |
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
src |
输入图像。 |
非空 |
输入 |
dst |
输出图像。 |
Mat类型 |
输出 |
thresh |
阈值。 |
(-inf, inf) |
输入 |
maxval |
超过(或不超过)阈值时赋予的最大值。 |
(-inf, inf) |
输入 |
type |
阈值类型。 |
THRESH_BINARY、THRESH_BINARY_INV、THRESH_TRUNC、THRESH_TOZERO、THRESH_TOZERO_INV |
输入 |
错误码 |
描述 |
---|---|
INVALID_PARAM_MSG |
输入图像为空。 |
NOT_SUPPORT_MSG |
输入图像类型错误或type是不支持的类型。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <opencv2/opencv.hpp> #include <iostream> int main() { // 创建一个5x5的灰度图像 cv::Mat src = (cv::Mat_<uint8_t>(5, 5) << 50, 50, 50, 50, 50, 50, 150, 150, 150, 50, 50, 150, 200, 150, 50, 50, 150, 150, 150, 50, 50, 50, 50, 50, 50); // 应用二值化阈值,阈值设定为100,最大值设定为255 cv::Mat dst; cv::threshold(src, dst, 100, 255, cv::THRESH_BINARY); // 输出图像 std::cout<< dst << std::endl; return 0; } |
运行结果:
1 2 3 4 5 | [[ 0 0 0 0 0] [ 0 255 255 255 0] [ 0 255 255 255 0] [ 0 255 255 255 0] [ 0 0 0 0 0]] |