threshold

函数功能

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]]