我希望找到一个实用函数或变量,可以输出特定Mat类型所能达到的最大值。例如,CV_U8的最大可能值为255。
因此它可以运行在10种不同的图像类型上,并且输出带有相同数量色彩通道的双倍图像,通过将原始数据类型中允许的最大值除以比例缩放。
示例案例
Matlab有几个内置函数,可以接受任意图像类型的图像,并将其转换(必要时进行缩放)为另一种图像类型。
例如,Matlab有函数im2double。运行help im2double将显示:
Class Support
-------------
Intensity and truecolor images can be uint8, uint16, double, logical,
single, or int16. Indexed images can be uint8, uint16, double or
logical. Binary input images must be logical. The output image is double.
因此它可以运行在10种不同的图像类型上,并且输出带有相同数量色彩通道的双倍图像,通过将原始数据类型中允许的最大值除以比例缩放。
因此,如果能够获取输入数据类型的最大值并将其输入到convertTo()
和normalize()
函数中,则这两个OpenCV函数也可以完成相同的任务。
特别地,convertTo(dst, type, scale)
将会完全按照一项任务执行,如果我们能够使用scale = 1/<max_value_of_input_type>
,而normalize(src, dst, alpha, beta, NORM_MINMAX)
将使用alpha = <src_min>/<max_value_of_input_type>
和beta = <src_max>/<max_value_of_input_type>
。