一种解决方法是使用imwrite函数进行保存时,指定参数“BitDepth”为16或32,避免使用默认值8,这样就能保留更多的图像信息。
示例代码:
// 原始图像 Mat image = imread("lena.jpg");
// 转换为灰度图像 Mat gray; cvtColor(image, gray, COLOR_BGR2GRAY);
// 保存灰度图像为uint8格式,指定BitDepth为16 imwrite("gray_image_16bit.png", gray, { IMWRITE_PNG_COMPRESSION, 9, IMWRITE_PNG_STRATEGY, IMWRITE_PNG_STRATEGY_RLE, IMWRITE_PNG_DEPTH, 16 });
// 保存灰度图像为uint8格式,指定BitDepth为32 imwrite("gray_image_32bit.png", gray, { IMWRITE_PNG_COMPRESSION, 9, IMWRITE_PNG_STRATEGY, IMWRITE_PNG_STRATEGY_RLE, IMWRITE_PNG_DEPTH, 32 });
下一篇:保存图像,谷歌浏览器插件