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