convertTo

函数功能

convertTo函数用于将图像转换为另一种数据类型。通过指定目标数据类型和缩放因子,用户可以灵活调整图像的值范围。

函数接口

1
void Mat::convertTo(OutputArray dst, int type_, double alpha, double beta) const;

参数

参数名

描述

取值范围

输入/输出

dst

输出图像。

Mat类型

输出

type_

目标数据类型。

(CV_8U,CV_64F)

输入

alpha

可选的缩放因子,默认值为1。

(-inf, inf)

输入

beta

可选的偏移量,默认值为0。

(-inf, inf)

输入

返回值

错误码

错误码

描述

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
21
#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 创建一个5x5的简单图像
    cv::Mat src = (cv::Mat_<uint8_t>(5, 5) << 0, 0, 0, 0, 0,
                                              0, 1, 1, 1, 0,
                                              0, 1, 0, 1, 0,
                                              0, 1, 1, 1, 0,
                                              0, 0, 0, 0, 0);

    // 将图像的类型从8位无符号整型转换为32位浮点数,并进行缩放
    cv::Mat dst;
    src.convertTo(dst, CV_32F);  // 转换数据类型
    cv::convertScaleAbs(dst, dst, 2.0, 0); // 缩放图像

    // 输出图像
    std::cout << dst << std::endl;

    return 0;
}

运行结果:

1
2
3
4
5
[[ 0  0  0  0  0]
 [ 0  2  2  2  0]
 [ 0  2  0  2  0]
 [ 0  2  2  2  0]
 [ 0  0  0  0  0]]