我有一个 CV_16UC1 类型的 cv::Mat 图像,我在 CV_8UC1 中需要它,所以我可以在它上面运行 cv::integral。我不担心转换过程中的溢出——本质上我只想将图像从 unsigned short 批量转换为 unsigned char。
我在其他地方问过,有人建议cvtColor,但我不知道要使用什么转换代码。
使用 Mat::convertTo 怎么样?文档
一个简单的例子:(不确定你是否需要比例因子,因为我没有尝试过)
Your16Image.convertTo(outputImage, CV_8UC1, scalefactor)
您可以使用cv::convertScaleAbs直接将输出矩阵设置为无符号字符。