c# 直接保存16位灰度图像不能实现
标签:family 失败 com nbsp 文件 for www. doc ima
这里有一个数组,2个字节为一个像素,要保存为16位灰度图像,我试过了以下方法,均失败:
1)c# 中Bitmap类构造一个对象,然后将其保存。其自带的像素格式16位灰度,是不能用的。Format16bppGrayScale, 选择此项进行保存时会出错没法保存。
有人说用Format48bppRgb,来保存,这样r,g,b均为两个字节(16位),可以这样来保存,这样,文件就变大了好多。同时原始数据要进行相应的变化。
我试着用Bitmap类读入一个16位灰度的图像,可以显示。如果用Bitmap类的PixelFormat属性去读取这个图像的格式,会显示为32bppArgb。读取其中的像素颜色,得到的结果是[255,a,a,a],这个和用8位灰度表示没有区别。表示,c#读入16位灰度图像后,将其转换成了32bppArgb来处理。
2)后来试用了Emgu Cv中的Mat类的Save方法,和Image类的Save方法,都只能保存8位单通道,或者24位3通道。这是在其函数说明里指明的。
Image类的Save
http://www.emgu.com/wiki/files/3.2.0/document/html/01adb181-753d-0b14-f867-fee707f20b75.htm
Mat类的Save
http://www.emgu.com/wiki/files/3.2.0/document/html/684fd5ec-2bd2-7a84-97da-8d80d96f4af7.htm
前面写保存为16位灰度图的程序尝试是徒劳的,浪费太多时间。
c# 直接保存16位灰度图像不能实现
标签:family 失败 com nbsp 文件 for www. doc ima
原文地址:https://www.cnblogs.com/beforeluck-shang/p/8370864.html
评论