人机协同控制模块
视觉算法+运动控制引擎
开发周期缩短40%+

四.图象输入输出模块

imio模块主要提供不同格式的读写功能,将保存在磁盘等物理介质的不同格式如JPEG,BMP, GIF,TIFF文件读取到RVB格式的图象对象中,或者将RVB格式的图象对象输出到文件,并可以编码为不同格式的文件。

imio2.0版本是对开源项目freeimage v3.15.3版进行再封装而生成的模块,使用freeimage提供的编解码功能,可实现将磁盘文件或内存文件装载到RVB的图像对象里面等功能。

函数说明

4.1常量

表1 位图文件格式

标志 描述
RV_iff_BMP "bmp"
RV_iff_JPG "jpg"
RV_iff_JPEG "jpeg"
RV_iff_GIF "gif"
RV_iff_PNG "png"
RV_iff_MNG "mng"
RV_iff_TIF "tif"
RV_iff_TIFF "tiff"
RV_iff_TGA "tga"
RV_iff_PCX "pcx"
RV_iff_WBMP "wbmp"
RV_iff_JP2 "jp2"
RV_iff_PGM "pgm"
RV_iff_PPM "ppm"
RV_iff_ICO "ico"
RV_iff_RAS "ras"
RV_iff_DEFAULT 输入图片格式为空,即为 NULL

表2 内存位图格式

标志 描述
RV_IMF_DEFAULT 内存位图为空,即为 NULL
RV_IMF_BMP bmp 格式
RV_IMF_ICO ico 格式
RV_IMF_JPEG jpeg 格式
RV_IMF_MNG mng 格式
RV_IMF_PGM pgm 格式
RV_IMF_PNG png 格式
RV_IMF_PPM ppm 格式
RV_IMF_RAS ras 格式
RV_IMF_TIFF tiff 格式
RV_IMF_WBMP wbmp 格式
RV_IMF_GIF gif 格式
RV_IMF_JP2 jp2 格式
RV_IMF_RAW raw 格式
RV_IMF_TGA tga 格式

表6 按位图页数的分类

位图标志 描述
HIMAGEPAGE 单页位图
HMULTIIMAGEPAGE 多页位图

4.2函数

rvLoadImage

声明:IMIO_API RvImage rvLoadImage(const char *strFileName, const char* strFormat=RV_IFF_DEFAULT, int flag=0);

描述:从指定的位置装载不同格式的图象文件,并创建一个新的RVB图象对象。

参数:1、const char *strFileName -- 要载入的位图文件的路径名称; 2、const char* strFormat=RV_IFF_DEFAULT -- 载入位图文件的格式,默认为RV_IFF_DEFA ULT; 3、int flag=0 -- 标志,默认为0。

返回:新的RVB图像对象。

rvLoadImageEx

声明:IMIO_API BOOL rvLoadImageEx(RvImage image, const char *strFileName, const char* strFormat=RV_IFF_DEFAULT, int flag=0);

描述:指定的位置装载不同格式的图象文件,将图象数据装载到指定的RVB对象。

参数:1、RvImage image --指定的RVB图像对象; 2、const char *strFileName -- 要载入的位图文件的路径名称; 3、const char* strFormat=RV_IFF_DEFAULT-- 载入位图文件的格式,默认为RV_IFF_DEFA ULT; 4、int flag=0-- 标志,默认为0。

返回:装载成功则返回TRUE,否则返回FALSE。

rvSaveImage

声明:IMIO_API BOOL rvSaveImage(const RvImage image, const char *strFileName, const char* strFormat=RV_IFF_DEFAULT , int flag=0);

描述:将指定的RVB对象的图象数据进行编码,并保存为指定格式的文件。

参数:1、const RvImage image -- 指定的RVB对象;

2、const char *strFileName -- 要保存的位图文件的名称;

3、const char* strFormat=RV_IFF_DEFAULT -- 要保存的位图文件的格式,默认为RV_IFF_D EFAULT;

4、int flag=0 -- 标志,默认为0。

返回:编码并保存成功则返回TRUE,否则返回FALSE。

rvLoadImageInMemory

声明:IMIO_API RvImage rvLoadImageInMemory(void* pData, UINT size, int nFormat=RV_I MF_DEFAULT, int flag=0);

描述:读取内存中的图象,创建新的RVB图象。

参数:1、void* pData -- 内存中的图像数据的地址指针;

2、UINT size -- 内存图像数据大小;

3、int nFormat=RV_IMF_DEFAULT -- 内存图像数据格式,默认为RV_IMF_DEFAULT;

4、int flag=0 -- 标志,默认为0。

返回:新的RVB图像对象

rvLoadImageInMemoryEx

声明:IMIO_API BOOL rvLoadImageInMemoryEx(RvImage image, void* pData, UINT size, int nFormat=RV_IMF_DEFAULT, int flag=0);

描述:读取内存中的图象,将图象数据保存到已有的RVB图象对象里面。

参数:1、RvImage image -- 指定的RVB图像对象;

2、void* pData -- 内存中的图像数据的地址指针;

3、UINT size -- 内存图像数据大小;

4、int nFormat=RV_IMF_DEFAULT -- 内存图像数据格式,默认为RV_IMF_DEFAULT;

5、int flag=0 -- 标志,默认为0。

返回:若成功将内存中的数据保存到已有的RVB图像里面则返回TRUE,否则返回FALSE。

rvExportImageToMemory

声明:IMIO_API UINT rvExportImageToMemory(RvImage image, int nFormat, void* pBuffer, UINT size, int flag =0);

描述:将RVB图象对象转换成指定的格式,并输出到内存。

参数:1、RvImage image -- 指定的RVB图象对象

2、int nFormat -- RVB图像的格式

3、void* pBuffer -- 内存缓存区指针

4、UINT size -- 缓存区大小

5、int flag =0 -- 标志,默认为0。

返回:缓存区大小值。

rvOpenMultiImagePage

声明:IMIO_API HMULTIIMAGEPAGE rvOpenMultiImagePage(const char *strFileName, const char* strFormat=RV_IFF_DEFAULT, int flag=0, int fio=0);

描述:打开多页文件如TIF,GIF等,创建多页对象。

参数:1、const char *strFileName -- 指定的多页位图文件名;

2、const char* strFormat=RV_IFF_DEFAULT -- 位图文件的格式,默认为RV_IFF_DEFAULT;

3、int flag=0 -- 解码标志,默认为0

4、int fio=0 -- 设置打开模式是否有效的标志,默认为0。

返回:创建的多页位图对象。 rvOpenMultiImagePageInMemory

声明:IMIO_API HMULTIIMAGEPAGE rvOpenMultiImagePageInMemory(const char *data, UINT size, int nFormat=RV_IMF_DEFAULT,int flag=0);

描述:打开内存中的多页文件(如TIF,GIF等)的数据,创建多页对象。

参数:1、const char *data -- 内存中的多页文件数据指针;

2、UINT size -- 内存中的多页文件数据大小;

3、int nFormat=RV_IMF_DEFAULT -- 内存中的多页文件格式,默认为RV_IMF_DEFAULT;

4、int flag=0 -- 解码标志。

返回:创建的多页位图对象。

rvCloseMultiImagePage

声明:IMIO_API void rvCloseMultiImagePage(HMULTIIMAGEPAGE hMultiImagePage);

描述:销毁多页对象

参数:HMULTIIMAGEPAGE hMultiImagePage -- 指定的多页对象。

返回:无。

rvGetMultiImagePageCount

声明:IMIO_API int rvGetMultiImagePageCount(HMULTIIMAGEPAGE hMultiImagePage);

描述:获取多页图象中的页数。

参数:HMULTIIMAGEPAGE hMultiImagePage -- 指定的多页对象。

返回:

rvLockMultiImagePage

声明:IMIO_API HIMAGEPAGE rvLockMultiImagePage(HMULTIIMAGEPAGE hMultiImagePage, int index);

描述:将指定的多页图象中的某一页锁住,并返回该页。注意由该函数返回的单页必须由 rvUnlockMultiImagePage解锁。

参数:1、HMULTIIMAGEPAGE hMultiImagePage -- 指定多页对象 2、int index -- 多页对象某一页的索引。

返回:单页对象。

rvUnlockMultiImagePage

声明:IMIO_API void rvUnlockMultiImagePage (HMULTIIMAGEPAGE hMultiImagePage, HIMAGEPAGE hImagePage, BOOL bChanged=FALSE);

描述:将锁住的页解锁。

参数:1、HMULTIIMAGEPAGE hMultiImagePage -- 指定多页对象; 2、HIMAGEPAGE hImagePage -- 多页中的单页对象; 3、BOOL bChanged=FALSE -- 单页对象是否被更改,默认为FALSE。

返回:无。

rvOpenImagePage

声明:IMIO_API HIMAGEPAGE rvOpenImagePage(const char *strFileName, const char* strFormat= RV_IFF_DEFAULT,int flag=0);

描述:打开指定位置的图象文件,创建一个单页对象,并返回。注意:该函数返回的单页对象必须调 用rvCloseImagePage进行关闭。

参数:1、const char *strFileName -- 指定位置的图像文件名; 2、const char* strFormat=RV_IFF_DEFAULT -- 图像文件的格式,默认为RV_IFF_DEFAULT; 3、int flag=0 -- 标志,默认为0。

返回:单页对象。

rvOpenImagePage

声明:IMIO_API HIMAGEPAGE rvOpenImagePage(const char *data, UINT size, int nFormat= RV_IMF_DEFAULT ,int flag=0);

描述:创建一个单页对象,读取内存区的数据对象,并返回。注意:该函数返回的单页对象必须调用 rvCloseImagePage进行关闭。

参数:1、const char *data --内存区的数据对象指针; 2、UINT size -- 内存区的数据大小; 3、int nFormat=RV_IMF_DEFAULT -- 内存区的数据对象格式,默认为RV_IMF_DEFAULT; 4、int flag=0 -- 标志,默认为0。

返回:单页对象。

rvCloseImagePage

声明:IMIO_API void rvCloseImagePage(HIMAGEPAGE hImagePage);

描述:关闭单页对象。

参数:HIMAGEPAGE hImagePage -- 指定单页对象。

返回:无。

rvGetImagePageBits

声明:IMIO_API RvByte* rvGetImagePageBits (HIMAGEPAGE hImagePage);

描述:获取单页的图象数据区的开始地址。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:单页的图象数据区的开始地址。

rvGetImagePageBPP

声明:IMIO_API int rvGetImagePageBPP (HIMAGEPAGE hImagePage);

描述:获取单页的图象的像素位(每个像素由多少位组成)。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:单页的图象的像素位。

rvGetImagePageWidth

声明:IMIO_API int rvGetImagePageWidth (HIMAGEPAGE hImagePage);

描述:以像素为单位返回位图宽度。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:位图宽度。

rvGetImagePageHeight

声明:IMIO_API int rvGetImagePageHeight(HIMAGEPAGE hImagePage);

描述:以像素为单位返回位图高度。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:位图高度。

rvGetImagePageLine

声明:IMIO_API int rvGetImagePageLine(HIMAGEPAGE hImagePage);

描述:以字节为单位返回位图宽度。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:位图宽度。

rvGetImagePagePitch

声明:IMIO_API int rvGetImagePagePitch(HIMAGEPAGE hImagePage);

描述:以字节为单位返回对齐到下一个32位字节边界的位图宽度,又称位深度或线宽度(stride)或扫描宽度。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:对齐到下一个32位字节边界的位图宽度。

rvGetImagePageSize

声明:IMIO_API int rvGetImagePageSize(HIMAGEPAGE hImagePage);

描述:获取内存中一个FIBITMAP的DIB分量的大小,即BITMAPINFOHEADER+调色板+数据位(注意这不是FIBITMAP的真正大小,仅是其DIB分量的大小)。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:内存中一个FIBITMAP的DIB分量的大小。

rvGetImagePagePalette

声明:IMIO_API RGBQUAD* rvGetImagePagePalette(HIMAGEPAGE hImagePage);

描述:获取指向位图调色板的指针。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:指向位图调色板的指针。如果位图没有调色板(即当像素的位深度大于8时),则返回NULL。

rvGetImagePageColorsUsed

声明:IMIO_API int rvGetImagePageColorsUsed(HIMAGEPAGE hImagePage);

描述:获取在一个位图中使用的颜色数。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:在一个位图中使用的颜色数。对于配色位图,该函数返回调色板大小,而对于多色位图(high-colour bitmap)返回0。

rvGetImagePageInfoHeader

声明:IMIO_API BITMAPINFOHEADER* rvGetImagePageInfoHeader(HIMAGEPAGE hImagePage);

描述:获取指向一个FIBITMAP中的DIB分量的BITMAPINFOHEADER结构的指针。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:指向一个FIBITMAP中的DIB分量的BITMAPINFOHEADER结构的指针。

rvGetImagePageInfo

声明:IMIO_API BITMAPINFO* rvGetImagePageInfo(HIMAGEPAGE hImagePage);

描述:等同于FreeImage GetInfoHeader,但返回的是指向一个BITMAPINFO结构的指针,而不是 指向一个BITMAPINFOHEADER结构的指针。

参数:HIMAGEPAGE hImagePage -- 指定的单页对象。

返回:指向一个BITMAPINFO结构的指针。

rvReadImagePagePropertyInt

声明:IMIO_API BOOL rvReadImagePagePropertyInt(HIMAGEPAGE hImagePage, int nModel, const char* strName, int* pVal);

描述:读取单页图象的属性,该属性数据类型为整数类型。

参数:1、HIMAGEPAGE hImagePage -- 指定的单页对象; 2、int nModel -- 位图的元数据模型; 3、 const char* strName -- 元数据域名(在一个元数据模型内唯一); 4、 int* pVal -- 单页图像属性值指针。

返回:读取成功返回TRUE,否则返回FALSE。

rvReadImagePagePropertyUint

声明:IMIO_API BOOL rvReadImagePagePropertyUint(HIMAGEPAGE hImagePage, int nModel, const char* strName, unsigned int* pVal);

描述:读取单页图象的属性,该属性数据类型为无符号整数类型。

参数:1、HIMAGEPAGE hImagePage -- 指定的单页对象; 2、int nModel -- 位图的元数据模型; 3、 const char* strName -- 元数据域名(在一个元数据模型内唯一); 4、 unsigned int* pVal -- 单页图像属性数据指针。

返回:读取成功返回TRUE,否则返回FALSE。

rvReadImagePagePropertyFloat

声明:IMIO_API BOOL rvReadImagePagePropertyFloat(HIMAGEPAGE hImagePage, int nModel, const char* strName, double* pVal);

描述:读取单页图象的属性,该属性数据类型为浮点类型。

参数:1、HIMAGEPAGE hImagePage -- 指定的单页对象; 2、int nModel -- 位图的元数据模型; 3、 const char* strName -- 元数据域名(在一个元数据模型内唯一); 4、 double* pVal -- 单页图像属性数据指针。

返回:读取成功返回TRUE,否则返回FALSE。

rvReadImagePagePropertyString

声明:IMIO_API BOOL rvReadImagePagePropertyString(HIMAGEPAGE hImagePage, int nModel, const char* strName,char* pVal, int size);

描述:读取单页图象的属性,该属性数据类型为字符串类型。

参数:1、HIMAGEPAGE hImagePage -- 指定的单页对象; 2、int nModel -- 位图的元数据模型; 3、 const char* strName -- 元数据域名(在一个元数据模型内唯一); 4、 char* pVal -- 单页图像属性数据指针; 5、int size -- 字符串数据大小。

返回:读取成功返回TRUE,否则返回FALSE。

rvLoadBitmapInMemory

声明:IMIO_API RvImage rvLoadBitmapInMemory(BITMAPINFO* pBitmapInfo, void* pData, UINT dataSize);

描述:创建新RVB图形对象,读取内存BITMAP图象数据,数据区不包含格式信息。

参数:1、BITMAPINFO* pBitmapInfo -- 一个BITMAPINFO结构体的指针; 2、 void* pData -- 内存图像数据指针; 3、 UINT dataSize -- 数据大小。

返回:RVB图像对象。

rvLoadBitmapInMemoryEx

声明:IMIO_API BOOL rvLoadBitmapInMemoryEx(RvImage image, BITMAPINFO* pBitmapInfo, void* pData, UINT dataSize);

描述:读取内存BITMAP图象数据,将图像数据传入指定的RVB对象中。

参数:1、RvImage image -- RVB对象; 2、BITMAPINFO* pBitmapInfo -- 一个BITMAPINFO结构体的指针; 3、 void* pData -- 内存图像数据指针; 4、 UINT dataSize -- 数据大小。

返回:RVB图像对象。


QQ技术交流群:
微信技术交流群:
Marklab工作室
研发中心: 广东省东莞市大岭山镇元岭小区翠云街1巷16号
商务中心: 广东省东莞市松湖智谷B6栋225b

二维码1 二维码2 二维码3


Marklab工作室 版权所有  粤ICP备13082990号-2   友情链接 hao123 绿盟 搜狗 站长之家 太平洋下载 天极下载 淘宝店 软云动力

赞助和协作单位 广东省科学院自动化研究所 深圳市东百胜技术有限公司

统计显示 ▼