labview 像素图数据转换成数组的问题 本人为初学者,由于labview的资料很少,学习的很慢又遇到以下问题:

labview 像素图数据转换成数组的问题 本人为初学者,由于labview的资料很少,学习的很慢又遇到以下问题:,第1张

首先,看你从还原像素图的输出位置来看,你连的是4位图像,这样的话,就算你找到的是灰度的8位图,也是没有输出的。你试试连接到8位的图像或24位的彩色图试试。其次像素到数组,只是直观的将一幅图像的表示成了数字形式,并没有什么信息可言,对于图像处理而言,图像转换成数组作用不大。都是直接在图像中 *** 作的。有深度的图像处理,还得用NI的VISION工具包来处理。如提取图像中的边缘、测量尺寸、判断颜色、寻找异物缺陷、判断有误等等。

贴个函数吧

CDC::GetCurrentBitmap可以得到当前窗口DC的位图对象

BOOL CShape::SaveBmp(HBITMAP hBitmap, const char FileName)      

{      

 HDC     hDC;      

 //当前分辨率下每象素所占字节数      

 int     iBits;      

 //位图中每象素所占字节数      

 WORD     wBitCount;      

 //定义调色板大小,     位图中像素字节大小     ,位图文件大小     ,     写入文件字节数          

 DWORD     dwPaletteSize=0,     dwBmBitsSize=0,     dwDIBSize=0,     dwWritten=0;          

 //位图属性结构          

 BITMAP     Bitmap;              

 //位图文件头结构      

 BITMAPFILEHEADER     bmfHdr;              

 //位图信息头结构          

 BITMAPINFOHEADER     bi;              

 //指向位图信息头结构              

 LPBITMAPINFOHEADER     lpbi;              

 //定义文件,分配内存句柄,调色板句柄          

 HANDLE     fh,     hDib,     hPal,hOldPal=NULL;          

 //计算位图文件每个像素所占字节数          

 hDC     =     CreateDC(_T("DISPLAY"),     NULL,     NULL,     NULL);      

 iBits     =     GetDeviceCaps(hDC,     BITSPIXEL) GetDeviceCaps(hDC,     PLANES);          

 DeleteDC(hDC);          

 if (iBits <= 1)

 {

  wBitCount = 1;

 }

 else if (iBits <= 4)  

 {

  wBitCount = 4;        

 }

 else if (iBits <= 8) 

 {

  wBitCount = 8; 

 }

 else

 {

  wBitCount = 24;

 }

 GetObject(hBitmap, sizeof(Bitmap), (LPSTR)&Bitmap);      

 bibiSize = sizeof(BITMAPINFOHEADER);      

 bibiWidth =  BitmapbmWidth;      

 bibiHeight = BitmapbmHeight;      

 bibiPlanes = 1;      

 bibiBitCount = wBitCount;      

 bibiCompression =  BI_RGB;      

 bibiSizeImage  =  0;      

 bibiXPelsPerMeter = 0;      

 bibiYPelsPerMeter   =   0;      

 bibiClrImportant = 0;      

 bibiClrUsed   = 0;      

 dwBmBitsSize  = ((BitmapbmWidth          wBitCount     +     31)     /     32)          4          BitmapbmHeight;      

 //为位图内容分配内存          

 hDib     =     GlobalAlloc(GHND,dwBmBitsSize     +     dwPaletteSize     +     sizeof(BITMAPINFOHEADER));          

 lpbi     =     (LPBITMAPINFOHEADER)GlobalLock(hDib);          

 lpbi     =     bi;          

 //     处理调色板              

 hPal     =     GetStockObject(DEFAULT_PALETTE);          

 if     (hPal)          

 {          

  hDC     =     ::GetDC(NULL);          

  hOldPal     =     ::SelectPalette(hDC,     (HPALETTE)hPal,     FALSE);          

  RealizePalette(hDC);          

 }      

 //     获取该调色板下新的像素值          

 GetDIBits(hDC,

  hBitmap,

  0,  

  (UINT)BitmapbmHeight,

  (LPSTR)lpbi+sizeof(BITMAPINFOHEADER)+dwPaletteSize,

  (BITMAPINFO )lpbi,

  DIB_RGB_COLORS);          

 //恢复调色板              

 if (hOldPal)          

 {          

  ::SelectPalette(hDC,     (HPALETTE)hOldPal,     TRUE);          

  RealizePalette(hDC);          

  ::ReleaseDC(NULL,     hDC);          

 }          

 //创建位图文件              

 fh  =  CreateFile((LPCWSTR)FileName,

           GENERIC_WRITE,

     0,    

     NULL,   

     CREATE_ALWAYS,          

     FILE_ATTRIBUTE_NORMAL,

     NULL);/     FILE_FLAG_SEQUENTIAL_SCAN,     NULL);  /        

 if     (fh == INVALID_HANDLE_VALUE)

 {

  return     FALSE; 

 }

 //     设置位图文件头          

 bmfHdrbfType     =     0x4D42;     //     "BM"          

 dwDIBSize     =     sizeof(BITMAPFILEHEADER)     +     sizeof(BITMAPINFOHEADER)     +     dwPaletteSize     +     dwBmBitsSize;              

 bmfHdrbfSize     =     dwDIBSize;          

 bmfHdrbfReserved1     =     0;          

 bmfHdrbfReserved2     =     0;          

 bmfHdrbfOffBits     =     (DWORD)sizeof(BITMAPFILEHEADER)     +     (DWORD)sizeof(BITMAPINFOHEADER)     +     dwPaletteSize;          

 //     写入位图文件头          

 WriteFile(fh,     (LPSTR)&bmfHdr,     sizeof(BITMAPFILEHEADER),     &dwWritten,     NULL);          

 //     写入位图文件其余内容          

 WriteFile(fh,     (LPSTR)lpbi,     dwDIBSize,     &dwWritten,     NULL);          

 //清除              

 GlobalUnlock(hDib);          

 GlobalFree(hDib);          

 CloseHandle(fh);          

 return     TRUE;      

}

一、BMP格式

BMP是英文Bitmap(位图)的简写,它是Windows *** 作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows *** 作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。

二、GIF格式

GIF是英文Graphics Interchange Format(图形交换格式)的缩写。顾名思义,这种格式是用来交换的。事实上也是如此,上世纪80年代,美国一家著名的在线信息服务机构CompuServe针对当时网络传输带宽的限制,开发出了这种GIF图像格式。

GIF格式的特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到了广泛的应用。 最初的GIF只是简单地用来存储单幅静止图像(称为GIF87a),后来随着技术发展,可以同时存储若干幅静止图象进而形成连续的动画,使之成为当时支持2D动画为数不多的格式之一(称为GIF89a),而在GIF89a图像中可指定透明区域,使图像具有非同一般的显示效果,这更使GIF风光十足。目前Internet上大量采用的彩色动画文件多为这种格式的文件,也称为GIF89a格式文件。

此外,考虑到网络传输中的实际情况,GIF图像格式还增加了渐显方式,也就是说,在图像传输过程中,用户可以先看到图像的大致轮廓,然后随着传输过程的继续而逐步看清图像中的细节部分,从而适应了用户的"从朦胧到清楚"的观赏心理。目前Internet上大量采用的彩色动画文件多为这种格式的文件。

但GIF有个小小的缺点,即不能存储超过256色的图像。尽管如此,这种格式仍在网络上大行其道应用,这和GIF图像文件短小、下载速度快、可用许多具有同样大小的图像文件组成动画等优势是分不开的。

三、JPEG格式

JPEG也是常见的一种图像格式,它由联合照片专家组(Joint Photographic Experts Group)开发并以命名为"ISO 10918-1",JPEG仅仅是一种俗称而已。JPEG文件的扩展名为jpg或jpeg,其压缩技术十分先进,它用有损压缩方式去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像质量。

同时JPEG还是一种很灵活的格式,具有调节图像质量的功能,允许你用不同的压缩比例对这种文件压缩,比如我们最高可以把137MB的BMP位图文件压缩至203KB。当然我们完全可以在图像质量和文件尺寸之间找到平衡点。

由于JPEG优异的品质和杰出的表现,它的应用也非常广泛,特别是在网络和光盘读物上,肯定都能找到它的影子。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快,使得Web页有可能以较短的下载时间提供大量美观的图像,JPEG同时也就顺理成章地成为网络上最受欢迎的图像格式。

四、JPEG2000格式

JPEG 2000同样是由JPEG 组织负责制定的,它有一个正式名称叫做"ISO 15444",与JPEG相比,它具备更高压缩率以及更多新功能的新一代静态影像压缩技术。

JPEG2000 作为JPEG的升级版,其压缩率比JPEG高约30%左右。与JPEG不同的是,JPEG2000 同时支持有损和无损压缩,而 JPEG 只能支持有损压缩。无损压缩对保存一些重要是十分有用的。JPEG2000的一个极其重要的特征在于它能实现渐进传输,这一点与GIF的"渐显"有异曲同工之妙,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图象由朦胧到清晰显示,而不必是像现在的 JPEG 一样,由上到下慢慢显示。

此外,JPEG2000还支持所谓的"感兴趣区域"特性,你可以任意指定影像上你感兴趣区域的压缩质量,还可以选择指定的部份先解压缩。 JPEG 2000 和 JPEG 相比优势明显,且向下兼容,因此取代传统的JPEG格式指日可待。

JPEG2000可应用于传统的JPEG市场,如扫描仪、数码相机等,亦可应用于新兴领域,如网路传输、无线通讯等等。

五、TIFF格式

TIFF(Tag Image File Format)是Mac中广泛使用的图像格式,它由Aldus和微软联合开发,最初是出于跨平台存储扫描图像的需要而设计的。它的特点是图像格式复杂、存贮信息多。正因为它存储的图像细微层次的信息非常多,图像的质量也得以提高,故而非常有利于原稿的复制。

该格式有压缩和非压缩二种形式,其中压缩可采用LZW无损压缩方案存储。不过,由于TIFF格式结构较为复杂,兼容性较差,因此有时你的软件可能不能正确识别TIFF文件(现在绝大部分软件都已解决了这个问题)。目前在Mac和PC机上移植TIFF文件也十分便捷,因而TIFF现在也是微机上使用最广泛的图像文件格式之一。

六、PSD格式

这是著名的Adobe公司的图像处理软件Photoshop的专用格式Photoshop Document(PSD)。PSD其实是Photoshop进行平面设计的一张"草稿图",它里面包含有各种图层、通道、遮罩等多种设计的样稿,以便于下次打开文件时可以修改上一次的设计。在Photoshop所支持的各种图像格式中,PSD的存取速度比其它格式快很多,功能也很强大。由于Photoshop越来越被广泛地应用,所以我们有理由相信,这种格式也会逐步流行起来。

七、PNG格式

PNG(Portable Network Graphics)是一种新兴的网络图像格式。在1994年底,由于Unysis公司宣布GIF拥有专利的压缩方法,要求开发GIF软件的作者须缴交一定费用,由此促使免费的png图像格式的诞生。PNG一开始便结合GIF及JPG两家之长,打算一举取代这两种格式。1996年10月1日由PNG向国际网络联盟提出并得到推荐认可标准,并且大部分绘图软件和浏览器开始支持PNG图像浏览,从此PNG图像格式生机焕发。

PNG是目前保证最不失真的格式,它汲取了GIF和JPG二者的优点,存贮形式丰富,兼有GIF和JPG的色彩模式;它的另一个特点能把图像文件压缩到极限以利于网络传输,但又能保留所有与图像品质有关的信息,因为PNG是采用无损压缩方式来减少文件的大小,这一点与牺牲图像品质以换取高压缩率的JPG有所不同;它的第三个特点是显示速度很快,只需下载1/64的图像信息就可以显示出低分辨率的预览图像;第四,PNG同样支持透明图像的制作,透明图像在制作网页图像的时候很有用,我们可以把图象背景设为透明,用网页本身的颜色信息来代替设为透明的色彩,这样可让图像和网页背景很和谐地融合在一起。

PNG的缺点是不支持动画应用效果,如果在这方面能有所加强,简直就可以完全替代GIF和JPEG了。Macromedia公司的Fireworks软件的默认格式就是PNG。现在,越来越多的软件开始支持这一格式,而且在网络上也越来截止流行。

八、SWF格式

利用Flash我们可以制作出一种后缀名为SWF(Shockwave Format)的动画,这种格式的动画图像能够用比较小的体积来表现丰富的多媒体形式。在图像的传输方面,不必等到文件全部下载才能观看,而是可以边下载边看,因此特别适合网络传输,特别是在传输速率不佳的情况下,也能取得较好的效果。事实也证明了这一点,SWF如今已被大量应用于WEB网页进行多媒体演示与交互性设计。此外,SWF动画是其于矢量技术制作的,因此不管将画面放大多少倍,画面不会因此而有任何损害。综上,SWF格式作品以其高清晰度的画质和小巧的体积,受到了越来越多网页设计者的青睐,也越来越成为网页动画和网页设计制作的主流,目前已成为网上动画的事实标准。

九、SVG格式

SVG可以算是目前最最火热的图像文件格式了,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有互交功能,并可以随时插入到HTML中通过浏览器来观看。

它提供了目前网络流行格式GIF和JPEG无法具备了优势:可以任意放大图形显示,但绝不会以牺牲图像质量为代价;字在SVG图像中保留可编辑和可搜寻的状态;平均来讲,SVG文件比JPEG和GIF格式的文件要小很多,因而下载也很快。可以相信,SVG的开发将会为Web提供新的图像标准。

其它非主流图像格式:

1、PCX格式

PCX格式是ZSOFT公司在开发图像处理软件Paintbrush时开发的一种格式,这是一种经过压缩的格式,占用磁盘空间较少。由于该格式出现的时间较长,并且具有压缩及全彩色的能力,所以现在仍比较流行。

2、DXF格式

DXF(Autodesk Drawing Exchange Format)是AutoCAD中的矢量文件格式,它以ASCII码方式存储文件,在表现图形的大小方面十分精确。许多软件都支持DXF格式的输入与输出。

3、WMF格式

WMF(Windows Metafile Format)是Windows中常见的一种图元文件格式,属于矢量文件格式。它具有文件短小、图案造型化的特点,整个图形常由各个独立的组成部分拼接而成,其图形往往较粗糙。

4、EMF格式

EMF(Enhanced Metafile)是微软公司为了弥补使用WMF的不足而开发的一种Windows 32位扩展图元文件格式,也属于矢量文件格式,其目的是欲使图元文件更加容易接受

5、LIC(FLI/FLC)格式

Flic格式由Autodesk公司研制而成,FLIC是FLC和FLI的统称:FLI是最初的基于320×200分辨率的动画文件格式,而FLC则采用了更高效的数据压缩技术,所以具有比FLI更高的压缩比,其分辨率也有了不少提高。

6、EPS格式

EPS(Encapsulated PostScript)是PC机用户较少见的一种格式,而苹果Mac机的用户则用得较多。它是用PostScript语言描述的一种ASCII码文件格式,主要用于排版、打印等输出工作。

7、TGA格式

TGA(Tagged Graphics)文件是由美国Truevision公司为其显示卡开发的一种图像文件格式,已被国际上的图形、图像工业所接受。TGA的结构比较简单,属于一种图形、图像数据的通用格式,在多媒体领域有着很大影响,是计算机生成图像向电视转换的一种首选格式。

bmp转成jpg的方法,支持批处理:

步骤1,电脑上下载工具软件后安装打开,选择左边最上面的格式转换功能,然后点击添加文件蓝色按钮,将需要转换格式的bmp添加到软件中,批量添加批量转化更省事。

步骤2,添加完文件后进行设置,右边格式转换下拉框选择“bmp”格式,然后在上面设置转换后的输出目录(保存到哪个文件夹,也可以不设置采用软件默认位置)。

步骤3,设置完成后点击右上角开始转换按钮,启动格式批量转换。稍等片刻完成格式转换后,软件会自动打开保存的文件夹。

步骤4,通过案例可以看到,所有的bmp全部转换成了jpg格式。

jpg格式:PEG文件用去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像质量。

bmp格式:是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。

扩展资料:

 

1、GIF

GIF文件的数据,是一种基于LZW算法的连续色调的无损压缩格式。其压缩率一般在50%左右,它不属于任何应用程序。GIF格式可以存多幅彩色图像,如果把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上,就可构成一种最简单的动画。

2、TIFF

Tag Image File Format,简写为TIFF。是一种灵活的位图格式,主要用来存储包括照片和艺术图在内的图像。它最初由Aldus公司与微软公司一起为PostScript打印开发。TIFF与JPEG和PNG一起成为流行的高位彩色图像格式。

以上就是关于labview 像素图数据转换成数组的问题 本人为初学者,由于labview的资料很少,学习的很慢又遇到以下问题:全部的内容,包括:labview 像素图数据转换成数组的问题 本人为初学者,由于labview的资料很少,学习的很慢又遇到以下问题:、mfc c++ 如果我想只将对话框中的二维码保存为bmp格式的图片应该怎样做,急求、JPEG/BMP/TIF/PNG四种图像格式有什么不同等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10641011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存