gpt4 book ai didi

c++ - 如何在 OpenCV 中将 16 位图像转换为 32 位图像?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:01 25 4
gpt4 key购买 nike

我是 OpenCV 的新手。我的程序以 16 位无符号整数读取图像数据。我需要将图像数据乘以 16 位 unsigned int 的某个增益。因此,生成的数据应保存在 32 位图像文件中。我试过跟随,但我得到 8 位全白图像。请帮忙。

    Mat inputData = Mat(Size(width, height), CV_16U, inputdata); 
inputData.convertTo(input1Data, CV_32F);
input1Data = input1Data * gain;//gain is ushort

最佳答案

正如 Micka 在评论中指出的那样,首先我们需要通过传递比例因子将 inputData 的值缩放到 0.0f 和 1.0f 之间:

inputData.convertTo(input1Data, CV_32F, 1.0/65535.0f); // since in inputData 
// we have values between 0 and
// 65535 so all resulted values
// will be between 0.0f and 1.0f

现在,与乘法相同:

input1Data = input1Data * gain * (1.0f / 65535.0f); // gain, of course, will be
// automatically cast to float
// therefore the resulted factor
// will have value from 0 to 1,
// so input1Data too!

而且我认为这也应该编译:

input1Data *= gain * (1.0f / 65535.0f);

通过不创建临时数据来稍微优化第一个版本。

关于c++ - 如何在 OpenCV 中将 16 位图像转换为 32 位图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26591889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com