Emgucv 打开 tif 16bpp 灰度文件,但将强度降低到 8bpp
Emgucv opens tif 16bpp greyscale file but scales intensity down to 8bpp
我正在使用 C# winforms 中的应用程序工作,它需要处理一些以 16bpp 灰度 .tif 文件形式提供的图像。
我正在使用 emgucv 打开文件并获取像素数组,但我发现实际上像素的强度按比例缩小到 8bpp。
我使用 Gimp v2.10.10 创建了一个最小示例图像来重现此图像。使用此代码:
string a = @"White.tif";
Image<Gray, UInt16> imgSinProcesar = new Image<Gray, UInt16>(a);
this.Text = "Color: " + imgSinProcesar.GetAverage().Intensity;
Link 到示例文件:
https://drive.google.com/open?id=14UQ4efP8lnkwA3kg6XFMxan1OF_Skvoc
我使用的 img 是全彩色的,强度为 65535。然而,计算出的平均值是 255,我在调试中检查每个像素的强度也是 255。
这是正常行为吗?我真的需要 16 位精度来正确完成必要的任务。
谢谢。
认为这是由于某些自动转换造成的。尝试以这种方式加载图像。
CvInvoke.Imread(a, Emgu.CV.CvEnum.ImreadModes.AnyDepth);
这将 return 一个 Mat
对象,但如果你需要一个 Image
对象,你可以使用 .ToImage<Gray, UInt16>()
.
我正在使用 C# winforms 中的应用程序工作,它需要处理一些以 16bpp 灰度 .tif 文件形式提供的图像。 我正在使用 emgucv 打开文件并获取像素数组,但我发现实际上像素的强度按比例缩小到 8bpp。
我使用 Gimp v2.10.10 创建了一个最小示例图像来重现此图像。使用此代码:
string a = @"White.tif";
Image<Gray, UInt16> imgSinProcesar = new Image<Gray, UInt16>(a);
this.Text = "Color: " + imgSinProcesar.GetAverage().Intensity;
Link 到示例文件: https://drive.google.com/open?id=14UQ4efP8lnkwA3kg6XFMxan1OF_Skvoc 我使用的 img 是全彩色的,强度为 65535。然而,计算出的平均值是 255,我在调试中检查每个像素的强度也是 255。
这是正常行为吗?我真的需要 16 位精度来正确完成必要的任务。
谢谢。
认为这是由于某些自动转换造成的。尝试以这种方式加载图像。
CvInvoke.Imread(a, Emgu.CV.CvEnum.ImreadModes.AnyDepth);
这将 return 一个 Mat
对象,但如果你需要一个 Image
对象,你可以使用 .ToImage<Gray, UInt16>()
.