c# 直接保存16位灰度图像不能实现

2021-02-17 17:20

阅读:670

标签: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


评论


亲,登录后才可以留言!