工控编程吧
标题:
Halcon image图片处理相关函数有哪些?详细介绍下吧
[打印本页]
作者:
qq263946146
时间:
2019-11-6 11:01
标题:
Halcon image图片处理相关函数有哪些?详细介绍下吧
对于不同类型的数据,halcon提供对应的函数进行数据存储与加载。
这里我们介绍与图像相关的函数
一. read_image( : Image : FileName : )
在后台读取指定一个或多个图像文件
HALCON图像对象格式(hobj)中,多幅图像保存在此文件里作为一个图像数组返回。
如果区域或xlds都包含在文件中,就抛出一个异常。查看write_object函数了解更多信息。
用函数write_image保存的所有图像文件的操作(格式“IMA”)都有扩展名“IMA”。
一个描述文件可以包含在IMA格式的图像里(相同的文件名和扩展名'.exp')。
像素数据的类型('byte '、' INT4 ','real')也可以从描述文件获取。
如果描述文件不存在,“byte”作为默认类型使用,以及默认的数据大小为'height * width),(通过get_system获取)。
如果“IMA”文件的数据大小与默认数据大小不相等,则会引发异常。
除 HALCON 格式, TIFF, GIF, BMP, JPEG, JPEG-2000, JPEG-XR, PNG, PCX,SUN-Raster, PGM, PPM, PBM, 和 XWD 格式文件都可以读取;
PBM的图像灰度值设置的范围为0和255。
文件格式即可通过扩展名识别(如果有的话),也可通过文件的内部结构识别。
如果显示扩展,则可以更快地找到图像。
如果没有扩展名,带扩展名的文件优先于没有扩展名的文件。
如果是PGM,PPM,和PBM文件,相应的扩展(例如,“PGM”)或总值“PNM”可以被使用。
如果是TIFF格式,TIFF和TIF文件也可识别。
如果是“JXR JPEG-XR '格式,' WDP ','wdp'和' HDP格式也可识别。
如果是JPEG-2000格式,仅 JP2文件可识别。
如果是色图像,三个颜色通道的图像被创建,红色通道存储在第一个,
蓝色通道第二个和绿色通道第三个。
对于图像格式TIFF、PNG、JPEG-XR,和JPEG-2000,二进制alpha通道被解释为域。
对于TIFF文件,
额外带有PhotometricInterpretation= TransparencyMask值的二进制SubIFDs被解释为域。
否则,生成的图像对象的域(=矩阵的所有像素)被选择为最大。
对于TIFF图像,多页TIFF文件是以图像对象的数组格式返回。
对于'int8”格式的图像只能在64位系统中读取。
而且,只有IMA和TIFF格式支持这种图像类型。
图像文件在当前工作目录和Halcon图像目录中搜索(由环境变量决定)。
HALCON图像目录预设在'.'和' /usr/local/ HALCON/images类似UNIX系统的环境中。
可以通过函数set_system设置。可以显示多个图像目录。
这是通过将单个目录分隔为冒号来完成的。
此外,搜索路径可以通过设置环境变量halconimages(与image_dir 结构相同)实现。
例如: setenv HALCONIMAGES "/usr/images:/usr/local/halcon/images"HALCON也搜索子目录 “images” 中图片(为程序实例图片)。
环境变量halconroot用于HALCON目录。二. write_image(Image : : Format, FillColor, FileName : )以图像格式保存图片如果域(区域)不能以指定的格式(为“BMP”、“JPEG”,和“ima”)保存,区域外的所有像素的颜色定义为FillColor。
对于灰度值图像,必须传递0(黑色)和255(白色)之间的值。RGB彩色图像的RGB值可以作为一个十六进制值直接传递:例如,0xffff00为黄色背景(红色= 255 = 255,绿色,蓝色= 0)。
当前支持下面格式:'tiff', 'bigtiff': TIFF format, file extension *.tif
例程:
read_image(image,'fabrik')
write_image(image,'jpeg',0,'JPG.JPG')
三. serialize_image(Image : : : SerializedItemHandle)
serialize_image串行化图像对象(查看fwrite_serialized_item了解串行化基本原理)。
图像对象是由参数Image 定义的。
串行化后的图像对象由SerializedItemHandle返回,可用deserialize_image进行反串行化。
四. deserialize_image( : Image : SerializedItemHandle : )
deserialize_image进行反串行化一个由serialize_image串行化的图像对象,
(查看fwrite_serialized_item了解串行化基本原理)。
串行化的图像对象由参数SerializedItemHandle定义。
反序列化的图像存储在Image 参数中。
三. serialize_image(Image : : : SerializedItemHandle)
serialize_image串行化图像对象(查看fwrite_serialized_item了解串行化基本原理)。
图像对象是由参数Image 定义的。
串行化后的图像对象由SerializedItemHandle返回,可用deserialize_image进行反串行化。
四. deserialize_image( : Image : SerializedItemHandle : )
deserialize_image进行反串行化一个由serialize_image串行化的图像对象,(查看fwrite_serialized_item了解串行化基本原理)。
串行化的图像对象由参数SerializedItemHandle定义。反序列化的图像存储在Image 参数中。
五. read_sequence( : Image : HeaderSize, SourceWidth, SourceHeight, StartRow, StartColumn, DestWidth, DestHeight, PixelType,BitOrder, ByteOrder, Pad, Index, FileName : )
从文件读取无格式的图像数据,并返回一个“合适”的图像。
图像数据必须连续逐像素逐行地填充。
任何文件头(长度为headersize字节)被跳过。
参数sourcewidth和sourceheight表明填充图像的大小。
destwidth和destheight显示图像的尺寸。
在最简单的情况下,这些参数是相同的。
图像的部分区域也可以被读取。
[halcon]1[/halcon]
[MFC408]1[/MFC408]
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4